将SQLIte数据迁移到MySQL并管理/更新外键?

时间:2015-11-04 14:22:50

标签: mysql sql database sqlite synchronization

我正在开发一个Android应用程序,其中数据存储在SQLite数据库中。

我已经在网络上与MySQL数据库同步到我在设备中发送存储在SQLite中的数据。

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

2 个答案:

答案 0 :(得分: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设置新主键并恢复关系。

  4. 这应该适用于我所了解的大多数情况。

答案 1 :(得分:0)

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

我将尝试将id2字段添加到将存储与主键相同的值的表(_id)

当我从SQLite向MySQL发送信息并且主键递增时,我将使用主键的原始值的id2字段,以便我可以将其与其他表的外键进行比较并更新它。

让我们看看它是否有效。

由于