2012-11-03 51 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; 
相關問題