16

database1テーブルt1とテーブルで名前が付けられたSQLiteデータベースがdatabase2ありますt2t2からテーブルをdatabase2インポートしたいdatabase1。どのコマンドを使用する必要がありますか?

4

3 に答える 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 に答える