use*_*427 6 database sqlite macos
我试图指向路径下的文件。我的test2.sql样子是这样的:
create table setting (id integer primary key, status text)
insert into setting values (1, 'new')
Run Code Online (Sandbox Code Playgroud)
当我输入这个命令时:
sqlite> .read users/name/test2.sql
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error: cannot open "test2.sql"
Run Code Online (Sandbox Code Playgroud)
或者表现得好像它执行时没有错误,但没有记录添加到表中。
我愿意
sqlite> select * from setting;
Run Code Online (Sandbox Code Playgroud)
这可以追溯到:
sqlite>
Run Code Online (Sandbox Code Playgroud)
使用该.read命令有任何问题吗?
首先,每个 SQL 语句必须以分号结尾。
-- file: test2.sql
create table setting (id integer primary key, status text);
insert into setting values (1, 'new');
Run Code Online (Sandbox Code Playgroud)
其次,当数据库和文件“test2.sql”位于同一目录中时,您可以.read仅使用文件名来该文件。文件名两边加双引号可以避免文件名中有空格时出现错误。
$ sqlite3 test.db
SQLite version 3.8.7.2 2014-11-18 20:57:56
Enter ".help" for usage hints.
sqlite> .read "test2.sql"
sqlite> .headers on
sqlite> .mode columns
sqlite> select * from setting;
id status
---------- ----------
1 new
Run Code Online (Sandbox Code Playgroud)
使用完整路径应该始终有效。如果文件名中可能有空格,也用双引号引起来完整路径。该字符串users/name/test2.sql不是完整路径。完整路径始终以/. (POSIX 路径中的目录分隔符是/;在 HFS 路径中分隔符是:。)您还应该知道一些(大多数?)文件系统区分大小写:/users/name/test2.sql和/Users/name/test2.sql是两个不同的东西。
您还可以使用命令行重定向来读取该文件。同样,如果数据库和 SQL 文件位于同一目录中,则可以只使用文件名。
$ rm test.db
$ sqlite3 test.db < "test2.sql"
$ sqlite3 test.db
SQLite version 3.8.7.2 2014-11-18 20:57:56
Enter ".help" for usage hints.
sqlite> .headers on
sqlite> .mode columns
sqlite> select * from setting;
id status
---------- ----------
1 new
Run Code Online (Sandbox Code Playgroud)
最后,检查 SQL 文件的权限。
$ ls -l "test2.sql"
-rw-rw-r-- 1 mike mike 118 Jan 15 09:28 test2.sql
Run Code Online (Sandbox Code Playgroud)
如果您没有该文件的读取权限,则将无法打开它。
| 归档时间: |
|
| 查看次数: |
14318 次 |
| 最近记录: |