2015-11-04 48 views
0

我正在开发一个数据存储在SQLite数据库中的Android应用程序。将SQLIte Data迁移到MySQL并管理/更新外键?

我已经与网络中的MySQL数据库进行了同步,以便将数据存储在设备中的SQLite中。

问题是我不知道如何维护表之间的关系,因为主键将用AUTO_INCREMENT更新,并且外键保持不变,从而破坏了表之间的关系。

回答

0

如果这是完全迁移,请勿在迁移过程中使用自动增量 - 使用普通列创建表。导入后使用ALTER TABLE更改模型。

对于增量同步,我看到的最简单的方法是每个MySQL表中的附加列sqlite_id,并填充原始ID。然后,您可以使用UPDATE(使用连接)更新引用。

替代方案涉及用于存储数据的临时表和用于配对的辅助表。对于更大的数据模型是乏味的。

我倾向于使用的方法,如果可能的话,是在这种情况下避免自动增量。我有一个辅助表,有四列,如下所示:t_import(tablename,operationid,sqlite_id,mysqlid)。 过程如下:

  1. 将主键导入t_import。如果需要,使用operationid来分隔平行输入。

  2. 为数据表生成新密钥并将它们存储到t_import表中。这可以与第一步相结合。

  3. 导入实际数据并使用t_import设置新的主键和恢复关系。

这应该为我所了解的大多数情况下工作。

0

感谢或帮助,你给了我一些想法。

我会尝试将ID2字段添加到将相同的值(_id)

存储作为主键。当我从SQLite的将信息发送到MySQL和主键递增我有表将id2字段与主键的原始值进行比较,以便我可以将其与其他表的外键进行比较并更新它。

让我们看看它是否有效。

谢谢

+0

只要小心做适当的事务隔离,如果多个同步可以同时运行。 – Thinkeye