从SQLite 3导出数据

Dav*_*ini 9 sql sqlite

我需要一种简单的方法从多个表的SQLite数据库导出数据,然后将它们导入另一个数据库.

这是我的情景.我有5个表:A,B,C,D,E.

每个表都有一个主键作为名为ID的第一列.我想要一个Unix命令,它只能以可导入另一个数据库的格式从主键转储行中的数据.

我知道我能做到

sqlite3 db .dump | grep INSERT
Run Code Online (Sandbox Code Playgroud)

但是这给了我表中的所有数据.我不是数据库专家,我正在尝试使用所有unix命令来编写shell脚本,而不是编写C++代码来执行此操作(因为这是人们告诉我这是最简单的方法) .我只是拒绝编写C++代码来完成一项任务,可以在命令行的4-5语句中完成.

有什么建议?

bar*_*ddu 11

这可能看起来有点奇怪,但你可以尝试一下:

创建文本文件并在其中放置以下语句:

.mode insert
.output insert.sql
select * from TABLE where STATEMENT; -- place the needed select query here
.output stdout
Run Code Online (Sandbox Code Playgroud)

将此文件提供给sqlite3:

$ sqlite3 -init initf DATA.DB .schema > schema.sql
Run Code Online (Sandbox Code Playgroud)

结果您将获得两个文件:一个使用简单的"插入"(insert.sql),另一个使用db schema(schema.sql).

  • 我建议在更改模式时包含表名:`.mode insert TABLE`.这将使它在生成的insert语句中包含表的名称. (4认同)

p.c*_*ell 2

建议寻找一个可以将查询导出为 CSV 的工具。听起来你想要一个剧本。您想重用并自动化它吗?

对于其他场景,也许可以考虑sqlite-manager Firefox 插件。它支持运行即席查询并将结果导出到 CSV。

其中,给出以下声明:

 SELECT ID FROM TableA
Run Code Online (Sandbox Code Playgroud)

根据需要对每个表重复此操作。