我们如何保存在sqlite3中创建的数据库

时间:2015-01-19 12:35:45

标签: database sqlite

我是数据库新手。我正在尝试在其中创建数据库和表。 但退出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 它不会显示任何与保存和打开现有数据库相关的命令。 提前谢谢。

4 个答案:

答案 0 :(得分:16)

  

我正在尝试在其中创建数据库和表。但是在退出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

数据仍在那里。

答案 1 :(得分:5)

正如迈克在答案中指出的那样,你应该提供一个文件名来放入数据库。

如果你做了很多工作并且你没有预先提供文件名并且你在.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         

答案 2 :(得分:2)

你应该提供一个文件名作为.save命令的参数,例如:

sqlite> .save ex1.db

docs:http://www.sqlite.org/cli.html

答案 3 :(得分:0)

使用Sqlite3 ex1.db打开数据库。之后,所有查询将在您的数据库中生效。