将大型SQLite数据库转换为MySQL

3
我有3个sqlite3数据库文件,大小从170G1.07T,在我的CentOS 7服务器上。我可以通过sqlite3 logs.db .dump > logs.sql创建转储文件,但由于语法问题,这些SQL文件无法导入到MySQL中。
我已阅读了以下解决方案:

快速简单地将SQLite3迁移到MySQL?

http://www.sqlite.org/cvstrac/wiki?p=ConverterTools

http://www.redmine.org/boards/2/topics/12793

https://realpython.com/blog/python/web2py-migrating-from-sqlite-to-mysql/

https://github.com/athlite/sqlite3-to-mysql

我尝试了一些方法,但好像不起作用。我的内存不足以支持字符串的搜索和替换。
有没有一些有效的方式可以迁移大型sqlite数据库?

你能否分两步处理结构和数据呢?导出创建表的语句,并根据语法差异进行必要的修改。然后将数据导出为CSV格式,以便可以将其导入到已准备好的MySQL表中(使用LOAD DATA INFILE或类似方法)。 - undefined
你应该尝试一些多数据库管理应用,比如Navicat Premium,它可以在不同的数据库类型之间迁移数据 - http://www.navicat.com/products/navicat-premium - undefined
谢谢,@CBroe!我对此并不太确定。这不仅涉及到语句,还有值和符号,如果你查看一下http://www.redmine.org/boards/2/topics/12793中的步骤。该脚本逐行执行。 - undefined
谢谢,@OndřejŠotek!我猜...一个购买的解决方案应该可以。忘了在问题中加上,我正在寻找一些免费的解决方案...不认为我的主管愿意为此支付600美元... - undefined
1个回答

4
显然,我没有使用这个链接中的所有脚本:http://www.redmine.org/boards/2/topics/12793,我只用了Peter Sørensen的最新脚本,但它无法处理大文件,因为控制台会返回“Killed”。我猜测这可能与临时文件操作有关。
我的问题是通过Pavel Medvedev的脚本
得到解决。虽然Peter的帖子说更新后的脚本解决了“当字符串跨越多行时未全部转换为正确的mysql值”的问题。我的sql文件有多行字符串,Pavel的脚本可以处理。一切都没有问题。也许Peter提到的问题会在某些人的文件中出现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接