我有以database1
tablet1
和database2
table命名的 SQLite 数据库t2
。我想将表t2
从database2
导入到database1
. 我应该使用什么命令?
问问题
24699 次
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 回答