使用Python将SQLite3数据库表迁移到MySQL,无需导出文件

1 投票
2 回答
3529 浏览
提问于 2025-04-15 19:43

我需要把我在SQLite3里创建的信息迁移到我网站上的MySQL数据库。这个网站是在一个托管服务器上。我可以远程访问MySQL数据库。起初我以为这会很简单,但我发现没有什么好的资料,看到的内容都暗示着你需要先把SQLite3文件导出,再用一些复杂的脚本把它转换成MySQL的导出文件,然后再导入到MySQL里。

(例如:有没有简单的方法把SQLite3迁移到MySQL?)

我的问题是:直接从脚本读取并导入到MySQL不是更好吗?我之前没有用过MySQL和Python,但我觉得这样做步骤少,出错的可能性也小。我也想节省一些时间,不想去理解MySQL导出文件是怎么回事。

如果你有脚本(最好是Python的)、工具或者链接能帮我,那就太好了,但我最关心的还是怎么去做。我不可能检查每一个细节(否则我就直接复制粘贴了),所以我想确保我走的是正确的路。

我在用Django,也许有Django特定的方法,但我还没找到。

2 个回答

2

你有没有试过使用django-admin的dumpdata和loaddata命令?

比如说,先把sqlite3数据库导出:

manage.py dumpdata

然后把数据库换成mysql,重新创建表格,然后再把数据导入进去:

manage.py loaddata mydata.json

dumpdata默认会把数据导出为json格式,但你也可以设置成xml格式。

另外,你也可以直接用python的数据库接口、sqlalchemy或者django的ORM来读取整个sqlite3数据库,然后把数据导入到MySQL数据库中。

2

之所以需要这些“乱七八糟”的脚本,是因为解决这个问题通常比较困难。

如果运气好,两个数据库之间的结构不兼容的地方不会太多。

这些链接可能会对你有帮助:

db_dump.py
dbpickle.py
你最喜欢的在 Django 中管理数据库迁移的解决方案是什么?

撰写回答