如何从sqlite中的另一个数据库导入表?

sac*_*hit 14 sqlite

我有database1一个用表t1database2一个表命名的SQLite数据库t2.我想导入表t2database2database1.我应该使用什么命令?

CL.*_*CL. 33

database2使用sqlite3命令行工具打开,并使用该命令读取表定义.schema t2.(或者,使用任何其他允许读取表定义的工具.)

然后打开database1,使用以下命令附加其他数据库:

ATTACH 'database2file' AS db2;
Run Code Online (Sandbox Code Playgroud)

然后创建表t2,并复制数据:

INSERT INTO t2 SELECT * FROM db2.t2;
Run Code Online (Sandbox Code Playgroud)


小智 12

Shell命令:

sqlite3 database1
Run Code Online (Sandbox Code Playgroud)

在SQLite shell中:

sqlite> ATTACH 'database2' AS db2;
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2;
Run Code Online (Sandbox Code Playgroud)


miv*_*ivk 5

您可以使用sqlite3 .dump命令将转储输出传递到另一个数据库。它使用带有表名的可选参数。

db1=~/mydb1.sqlite 
db2=~/mydb2.sqlite
t=t2

sqlite3 "$db2" ".dump $t" | sqlite3 "$db1"
Run Code Online (Sandbox Code Playgroud)

如果两个数据库中都没有公用表,则可以省略表名并复制所有表。

如果表很大,这可能会很慢,因为它将执行INSERT。如果它们很大,并且确实太慢,也许.import会更快。您可以尝试类似

sqlite3 "$db2" ".schema $t" | sqlite3 "$db1"
sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t"
Run Code Online (Sandbox Code Playgroud)