2012-11-03 17 views
8

database1という名前のSQLiteデータベースのテーブルt1database2とテーブルt2があります。テーブルt2database2からdatabase1にインポートします。私はどんなコマンドを使うべきですか?sqliteの別のデータベースからテーブルをインポートするにはどうすればいいですか?

+1

([別のSQLiteのDBからのコピーデータ]の可能な重複http://stackoverflow.com/questions/2359205/copying-data-from-one-sqlite-db 〜他) –

答えて

28

オープンdatabase2のようなものを試してみて、コマンド.schema t2でテーブル定義を読むことができました。

ATTACH 'database2file' AS db2; 

は、テーブルt2を作成し、データをコピー: コマンドで

そして

オープンdatabase1attach他のデータベース(あるいは、テーブル定義を読み取ることを可能にする任意の他のツールを使用して)超えると:

INSERT INTO t2 SELECT * FROM db2.t2; 
4

sqlite3 .dumpコマンドを使用して、ダンプ出力を他のdbにパイプすることができます。テーブル名とともにオプションの引数をとります。

db1=~/mydb1.sqlite 
db2=~/mydb2.sqlite 
t=t2 

sqlite3 "$db2" ".dump $t" | sqlite3 "$db1" 

両方のデータベースに共通のテーブルがない場合は、テーブル名を省略してすべてのテーブルをコピーできます。

テーブルが大きい場合は、INSERTを実行するため、処理が遅くなることがあります。彼らが巨大で、本当に遅すぎる場合は、おそらく.importが速くなります。あなたはsqlite3 command-line tool

sqlite3 "$db2" ".schema $t" | sqlite3 "$db1" 
sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t" 
5

シェルコマンド:

sqlite3 database1 
SQLiteのシェルで

sqlite> ATTACH 'database2' AS db2; 
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2; 
関連する問題