需求:
有兩個不同的SQLite數據庫 A、B,需要將B數據庫中的表復制到A數據庫中去。
解決辦法:
(1)使用軟件:SQLite Expert Personal 3;
(2)操作步驟:
a) 在軟件SQLite Expert Personal 3中打開 A、B數據庫;
b) 選擇A數據庫,點擊鼠標右鍵,找到“Attach Database”選項,選擇該項執行;
c) 在彈出的“文件選擇”界面中,選擇B數據庫文件,點擊“確認”按鈕;
d) 在彈出的對話框中,先確認選擇的數據庫文件是否正確。如果正確,點擊“OK”按鈕;
此時,A、B兩個數據庫之間的關系已建立。
注:此步驟可用SQLite語句執行。具體代碼見參考資料網址:http://topic.csdn.net/u/20090609/11/46123755-8a9f-4b28-a6bf-3bdee3bac8e8.html
C:\temp>sqlite3 db1 SQLite version 3.6.7 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables t1 tx sqlite> select * from t1; 1|A 2|B sqlite> .q C:\temp>sqlite3 db2 SQLite version 3.6.7 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables sqlite> ATTACH DATABASE db1 as db1; sqlite> select * from db1.t1; 1|A 2|B sqlite> create table t2 as select * from db1.t1; sqlite> select * from t2; 1|A 2|B sqlite>
(3)選擇A數據庫,在SQLite Expert Personal 3中找到執行SQL語句的“SQL選項卡”界面,執行“create table 表名稱 as select * from B.要復制的表的名稱;”;
至此,SQLite中不同數據庫間復制表操作已完成。
然而,上述操作后會有一個關鍵問題:B中被復制的表中的主鍵設置不能被復制。意即,B中有主鍵的表被復制到A表中后,原來被設置為主鍵的字段不再為主鍵字段。注:表創建好后不能修改主鍵原因,請參考此處:http://stackoverflow.com/questions/946011/sqlite-add-primary-key
解決上述問題的方法:
Example:要復制B數據庫中的“B_table_test”表;
a)根據“B_table_test”表的結構,在A表中創建相同表結構的“A_table_test”(包括主鍵設置);
b)執行上述“解決辦法”中的第二步“(2)”中的操作;
c )選擇A數據庫,執行“INSERT INTO A_table_test SELECT * FROM B.B_table_test”;
至此,SQLite 數據庫中表復制時,主鍵不能被復制問題被解決。
結合以上描述,則可完成Android SQLite 不同數據庫之間表復制問題。