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

时间:2012-11-03 06:04:35

标签: sqlite

我有一个名为database1的SQLite数据库,其中包含一个表t1和一个database2,其中包含一个表t2。我想将t2中的表格database2导入database1。我应该使用什么命令?

3 个答案:

答案 0 :(得分:33)

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

然后使用以下命令打开database1attach另一个数据库:

ATTACH 'database2file' AS db2;

然后创建表t2,并使用以下内容复制数据:

INSERT INTO t2 SELECT * FROM db2.t2;

答案 1 :(得分:11)

Shell命令:

sqlite3 database1

在SQLite shell中:

sqlite> ATTACH 'database2' AS db2;
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2;

答案 2 :(得分:4)

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

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

sqlite3 "$db2" ".dump $t" | sqlite3 "$db1"

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

如果表很大,这可能会很慢,因为它会执行INSERT。如果它们很大,并且它实在太慢,那么.import可能会更快。你可以试试像

这样的东西
sqlite3 "$db2" ".schema $t" | sqlite3 "$db1"
sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t"