5

まったく同じ構造を持つ複数の場所に存在する複数のデータベース ファイルがあります。アタッチ機能を使用して複数のファイルを 1 つのデータベース接続に接続できることは理解していますが、これはそれらを個別のデータベースとして扱います。私は次のようなことをしたい:

SELECT uid, name FROM ALL_DATABASES.Users;

また、

SELECT uid, name FROM DB1.Users UNION SELECT uid, name FROM DB2.Users ;

マージする必要がある任意の数のデータベース ファイルがあるため、有効な答えではありません。最後に、データベース ファイルは別々にしておく必要があります。誰もこれを達成する方法を知っていますか?

編集:答えは私にアイデアを与えました:すべての異なるテーブルの組み合わせであるビューを作成することは可能でしょうか? すべてのデータベース ファイルとそれらが「マウント」するデータベースをクエリし、それをビュー クエリ内で使用して「マスター テーブル」を作成することは可能ですか?

4

2 に答える 2

6

SQLite は一度にアタッチできるデータベースの数に制限を課すため、単一のクエリで必要なことを行う方法はありません。

UNION数が SQLite の制限内にあることが保証されている場合 (「任意」の定義に違反しています)、実行する必要があるときに適切な s のセットを使用してクエリを生成することを妨げるものは何もありません。

本当に任意の数のテーブルをサポートするには、関連のないデータベースにテーブルを作成し、INSERT各候補から繰り返し行を作成するしかありません。

ATTACH DATABASE '/path/to/candidate/database' AS candidate;
INSERT INTO some_table (uid, name) SELECT uid, name FROM candidate.User;
DETACH DATABASE candidate;
于 2011-02-06T13:45:07.377 に答える