[英]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的行。 每個表還需要有一些主鍵/外鍵。 理想情況下,我們可以采用這些較小的表,然后在將來將它們全部壓縮為較大的表。
可以結合使用INSERT
和SELECT
。 與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.