我们如何保存在sqlite3中创建的数据库
how we can save database created in sqlite3
我是数据库新手。我正在尝试创建一个数据库并在其中 table 。
但退出sqlite后无法保存并再次打开。
我在centOS上使用sqlite3 3.6.20,当我输入以下命令时
.save ex1.db or .open ex1.db
它将打印以下错误消息。
Error: unknown command or invalid arguments: "save". Enter ".help" for help
Error: unknown command or invalid arguments: "open". Enter ".help" for help
并且在打印 .help 时
它不会显示任何与保存和打开现有数据库相关的命令。
提前致谢。
您应该提供一个文件名作为 .save 命令的参数,例如:
sqlite> .save ex1.db
I am trying to create a database and table in it. but unable to save and open again after exiting from sqlite.
您不需要保存。每个事务都写入磁盘。 (或多或少。)
要创建数据库"test.sl3",您可以这样做。 (从命令行。程序的工作方式大致相同。)
$ sqlite3 test.sl3
SQLite version 3.8.7.2 2014-11-18 20:57:56
Enter ".help" for usage hints.
sqlite> create table test (test_id integer primary key);
sqlite> insert into test values (1);
sqlite> select * from test;
1
.quit
没有.save
。现在再次加载数据库。
$ sqlite3 test.sl3
SQLite version 3.8.7.2 2014-11-18 20:57:56
Enter ".help" for usage hints.
sqlite> select * from test;
1
数据还在。
正如迈克在他的回答中指出的那样,您应该提供一个文件名来放入数据库。
如果您做了很多工作并且没有预先提供文件名,并且您在 .save
命令尚不可用的版本中工作(您引用 sqlite3 3.6.20
不知道,我也没有在 sqlite3 version 3.8.2
中看到它)你可以使用 .backup
命令
sqlite> .help
[...]
.backup ?DB? FILE Backup DB (default "main") to FILE
$ sqlite3
[...]
sqlite> create table mytable ( column1 text, column2 integer );
sqlite> insert into mytable values ( 'ENTRY1', 1 );
sqlite> insert into mytable values ( 'ENTRY2', 2 );
sqlite> .backup main temp.db
sqlite> .quit
$ sqlite3 temp.db
[...]
sqlite> .schema
CREATE TABLE mytable ( column1 text, column2 integer );
sqlite> select * from mytable;
column1 column2
---------- ----------
ENTRY1 1
ENTRY2 2
使用Sqlite3 ex1.db
打开你的数据库。之后,所有查询将在您的数据库中生效。
也许尝试使用绝对路径而不是相对路径。
我在 VS Code 中使用 alexcvzz 的 SQLite 扩展。
当我使用相对路径时,出现错误。
CREATE TABLE test (id INTEGER, name TEXT);
INSERT INTO test (id, name) VALUES (1, "Hello");
.save ex1.db
当我使用绝对路径时,它起作用了。
CREATE TABLE test (id INTEGER, name TEXT);
INSERT INTO test (id, name) VALUES (1, "Hello");
.save /Users/zacharyargentin/databases/ex1.db
注意:在 VS Code 扩展中,您必须在 运行 查询之前选择一个数据库,因此我选择了 :memory: 数据库,这是默认的 in-memory 数据库。一旦你关闭连接,这个数据库就会自行删除(所以如果你想保留它,你必须像我在上面的例子中那样保存它)。
我是数据库新手。我正在尝试创建一个数据库并在其中 table 。 但退出sqlite后无法保存并再次打开。 我在centOS上使用sqlite3 3.6.20,当我输入以下命令时
.save ex1.db or .open ex1.db
它将打印以下错误消息。
Error: unknown command or invalid arguments: "save". Enter ".help" for help
Error: unknown command or invalid arguments: "open". Enter ".help" for help
并且在打印 .help 时 它不会显示任何与保存和打开现有数据库相关的命令。 提前致谢。
您应该提供一个文件名作为 .save 命令的参数,例如:
sqlite> .save ex1.db
I am trying to create a database and table in it. but unable to save and open again after exiting from sqlite.
您不需要保存。每个事务都写入磁盘。 (或多或少。)
要创建数据库"test.sl3",您可以这样做。 (从命令行。程序的工作方式大致相同。)
$ sqlite3 test.sl3
SQLite version 3.8.7.2 2014-11-18 20:57:56
Enter ".help" for usage hints.
sqlite> create table test (test_id integer primary key);
sqlite> insert into test values (1);
sqlite> select * from test;
1
.quit
没有.save
。现在再次加载数据库。
$ sqlite3 test.sl3
SQLite version 3.8.7.2 2014-11-18 20:57:56
Enter ".help" for usage hints.
sqlite> select * from test;
1
数据还在。
正如迈克在他的回答中指出的那样,您应该提供一个文件名来放入数据库。
如果您做了很多工作并且没有预先提供文件名,并且您在 .save
命令尚不可用的版本中工作(您引用 sqlite3 3.6.20
不知道,我也没有在 sqlite3 version 3.8.2
中看到它)你可以使用 .backup
命令
sqlite> .help
[...]
.backup ?DB? FILE Backup DB (default "main") to FILE
$ sqlite3
[...]
sqlite> create table mytable ( column1 text, column2 integer );
sqlite> insert into mytable values ( 'ENTRY1', 1 );
sqlite> insert into mytable values ( 'ENTRY2', 2 );
sqlite> .backup main temp.db
sqlite> .quit
$ sqlite3 temp.db
[...]
sqlite> .schema
CREATE TABLE mytable ( column1 text, column2 integer );
sqlite> select * from mytable;
column1 column2
---------- ----------
ENTRY1 1
ENTRY2 2
使用Sqlite3 ex1.db
打开你的数据库。之后,所有查询将在您的数据库中生效。
也许尝试使用绝对路径而不是相对路径。
我在 VS Code 中使用 alexcvzz 的 SQLite 扩展。
当我使用相对路径时,出现错误。
CREATE TABLE test (id INTEGER, name TEXT);
INSERT INTO test (id, name) VALUES (1, "Hello");
.save ex1.db
当我使用绝对路径时,它起作用了。
CREATE TABLE test (id INTEGER, name TEXT);
INSERT INTO test (id, name) VALUES (1, "Hello");
.save /Users/zacharyargentin/databases/ex1.db
注意:在 VS Code 扩展中,您必须在 运行 查询之前选择一个数据库,因此我选择了 :memory: 数据库,这是默认的 in-memory 数据库。一旦你关闭连接,这个数据库就会自行删除(所以如果你想保留它,你必须像我在上面的例子中那样保存它)。