簡體   English   中英

從其他SQLite數據庫C#創建SQLite數據庫

[英]Create SQLite Database From Other SQLite Database C#

我有一個SQLite數據庫,其中包含一組表。 這些表中的所有數據都可以通過某些ID隔離為一組集合。 例如:

Table A
ID  value1 value2
1   asd    fgh
2   sdf    ghj

Table B
ID  ID2 value4
1   10   vbn
2   11   bnm

Table C
ID2 value5 value6
10  asdfg  qwer
11  tyui   hjkl

每個ID列將映射另一個ID ,每個ID2將映射到另一個ID2

我想使用此數據庫,並生成一系列較小的數據庫,每個數據庫都具有相同的結構,但只包含來自1個ID數據:

Database1.sqlite

Table A
ID  value1 value2
1   asd    fgh

Table B
ID  ID2 value4
1   10   vbn

Table C
ID2 value5 value6
10  asdfg  qwer

Database2.sqlite

Table A
ID  value1 value2
2   sdf    ghj

Table B
ID  ID2 value4
2   11   bnm

Table C
ID2 value5 value6
11  tyui   hjkl

我可以一個一個地創建表,通過一系列SELECT語句收集每個ID所有數據,然后通過一系列INSERT語句添加它,但是我認為必須有更好的方法。

我的另一個想法是,我可以創建一系列視圖,每個視圖都將數據隔離為上述格式。 從那里,我可以將這些系列視圖寫成一個sqlite文件作為數據庫。

我的問題是視圖生成想法有多現實? 是否有可能生成一系列模仿每個表結構的視圖,但是假設ID = 1 ,然后將這些視圖另存為sqlite文件? 所有這些都需要在C#中完成。 有沒有更好的方法來做我想做的事情?

更多信息這些表可以有多個具有相同ID的行。 每個表還需要有一些主鍵/外鍵。 理想情況下,我們可以采用這些較小的表,然后在將來將它們全部壓縮為較大的表。

可以結合使用INSERTSELECT ATTACHed數據庫一起使用,這允許對每個表使用一個語句進行復制:

ATTACH 'C:\some\where\Database1.sqlite' AS db1;
CREATE TABLE db1.A(ID, value1, value2);
CREATE TABLE db1.B(ID, ID2, value4);
CREATE TABLE db1.C(ID2, value5, value6);
INSERT INTO db1.A SELECT * FROM main.A WHERE ID = 1;
INSERT INTO db1.B SELECT * FROM main.B WHERE ID = 1;
INSERT INTO db1.C SELECT * FROM main.C
                  WHERE ID2 IN (SELECT ID2 FROM B WHERE ID = 1);

ATTACH 'C:\some\where\Database2.sqlite' AS db2;
CREATE TABLE db2.A(ID, value1, value2);
CREATE TABLE db2.B(ID, ID2, value4);
CREATE TABLE db2.C(ID2, value5, value6);
INSERT INTO db2.A SELECT * FROM main.A WHERE ID = 2;
INSERT INTO db2.B SELECT * FROM main.B WHERE ID = 2;
INSERT INTO db2.C SELECT * FROM main.C
                  WHERE ID2 IN (SELECT ID2 FROM B WHERE ID = 2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM