16

我有以database1tablet1database2table命名的 SQLite 数据库t2。我想将表t2database2导入到database1. 我应该使用什么命令?

4

3 回答 3

38

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

然后打开database1,使用命令附加另一个数据库:

ATTACH 'database2file' AS db2;

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

INSERT INTO t2 SELECT * FROM db2.t2;
于 2012-11-03T10:39:59.947 回答
15

外壳命令:

sqlite3 database1

在 SQLite 外壳中:

sqlite> ATTACH 'database2' AS db2;
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2;
于 2014-06-09T19:41:09.023 回答
6

您可以使用 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"
于 2012-11-03T10:37:48.347 回答