web-dev-qa-db-ja.com

多くのSQLiteデータベースをマージするにはどうすればよいですか?

すべて同じスキーマのSQLiteデータベースが多数ある場合、すべてのデータベースでクエリを実行するためにそれらを結合する最良の方法は何ですか?

[〜#〜] attach [〜#〜] を使用してこれを行うことが可能であることはわかっていますが、メモリシステムに応じて32および64データベースの 制限 がありますマシン上で。

63
DavidM

これはオンデマンドで行われ、1日に数回可能です。私がそれを動作させる方法は、 http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html にあります。ここで、データベースは大規模なデータベース、クエリが実行され、大規模なデータベースが削除されました。

18
DavidM

DavidMの答えの Nabble post から要約するには:

attach 'c:\test\b.db3' as toMerge;           
BEGIN; 
insert into AuditRecords select * from toMerge.AuditRecords; 
COMMIT; 
detach toMerge;

必要に応じて繰り返します。

注:マイクのコメントごとにdetach toMerge;を追加しました。

64
dfrankow

(新しい大きなデータベースを作成するために)このマージ操作を1回だけ実行する必要がある場合、すべてのsqliteデータベースをループするスクリプト/プログラムを作成してから、メイン(大きな)データベースにデータを挿入できます。

1
Espo

非常に古いスレッドですが、これは今日のプログラミングのニーズに関連する質問です。ここに投稿しているのは、提供された回答がまだ簡潔で、簡単で、わかりやすいものではないからです。これは、このページで終わるGoogle社員のためです。私たちが行くGUI:

  1. ダウンロード Sqlitestudio
  2. Ctrl + Oキーボードショートカットを使用して、すべてのデータベースファイルを追加します
  3. ロードされた各dbファイルをダブルクリックして、それらをすべて開く/アクティブ化する/展開する
  4. 楽しい部分:各テーブルを右クリックしてCopyをクリックし、ロードされたデータベースファイルのリストでターゲットデータベースに移動(または必要に応じて新しいデータベースファイルを作成)して右クリックターゲットdbをクリックし、Pasteをクリックします

このような困難なタスクは、コピーアンドペースト:)と呼ばれる古代のプログラミングスキルを使用して解決できることを認識して、私は驚きました。

1