我有一个名为database1
的SQLite数据库,其中包含一个表t1
和一个database2
,其中包含一个表t2
。我想将t2
中的表格database2
导入database1
。我应该使用什么命令?
答案 0 :(得分:33)
使用sqlite3
command-line tool打开database2
并使用命令.schema t2
读取表定义。
(或者,使用任何其他允许读取表定义的工具。)
然后使用以下命令打开database1
,attach另一个数据库:
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"