Android之SQLite——不同數據庫間復制表


需求:

  有兩個不同的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 不同數據庫之間表復制問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM