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

erd*_*shp 15 database sqlite

我是数据库新手.我正在尝试在其中创建数据库和表.但退出sqlite后无法保存并再次打开.我在centOS上使用sqlite3 3.6.20,当我输入以下命令时

.save ex1.db or .open ex1.db
Run Code Online (Sandbox Code Playgroud)

它将打印以下错误消息.

Error: unknown command or invalid arguments:  "save". Enter ".help" for help
Error: unknown command or invalid arguments:  "open". Enter ".help" for help
Run Code Online (Sandbox Code Playgroud)

当打印.help它不会显示任何与保存和打开现有数据库相关的命令.提前致谢.

Mik*_*ll' 19

我正在尝试在其中创建数据库和表.但退出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
Run Code Online (Sandbox Code Playgroud)

.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
Run Code Online (Sandbox Code Playgroud)

数据仍在那里.


bpg*_*rgo 6

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

sqlite> .save ex1.db
Run Code Online (Sandbox Code Playgroud)

文档: http: //www.sqlite.org/cli.html


Eri*_*rik 5

正如Mike在他的回答中指出的那样,你应该提供一个文件名来放入数据库.

如果你做了很多工作并且你没有预先提供文件名并且你在一个.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         
Run Code Online (Sandbox Code Playgroud)