• Android之SQLite——不同数据库间复制表 Binary


    需求:

      有两个不同的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 不同数据库之间表复制问题。

  • 相关阅读:
    删除目录软链接注意事项
    使用Dnsmasq搭建本地dns服务器上网
    在CentOS 7 上安装广告服务器 Revive Adserver
    CentOS6 Squid代理服务器的安装与配置
    CentOS6 PXE+Kickstart无人值守安装
    Redis的初步安装
    创建交互式shell脚本对话框
    C 捕获 lua 异常错误
    iic 之24C256存储器 及PCF8563
    汉字的编码与字模点阵小结
  • 原文地址:https://www.cnblogs.com/nmj1986/p/2688827.html
Copyright © 2020-2023  润新知