2012-11-03 110 views
8

我有一个名为database1 SQLite数据库与表t1database2与表t2表。我想将表t2database2导入database1。我应该使用什么命令?如何从sqlite中的其他数据库导入表?

+1

([从一个源码分贝到另一个复制数据]的可能的复制http://stackoverflow.com/questions/2359205/copying-data-from-one-sqlite-db -to-另一个) –

回答

28

打开database2sqlite3 command-line tool,并用命令.schema t2读表定义。 (可替代地,使用任何其他的工具,它允许读取表定义。)

然后打开database1attach其他数据库与所述命令:

ATTACH 'database2file' AS db2; 

然后创建表t2,和复制数据在具有:

INSERT INTO t2 SELECT * FROM db2.t2; 
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" 
5

Shell命令:

sqlite3 database1 

在SQLite的壳:

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