大型sqlite数据库到mysql

Posted

技术标签:

【中文标题】大型sqlite数据库到mysql【英文标题】:large sqlite database to mysql 【发布时间】:2015-08-11 12:11:16 【问题描述】:

我的 CentOS 7 sever 上有 3 个 sqlite3 数据库文件,从 170G1.07T。我可以通过sqlite3 logs.db .dump > logs.sql创建转储文件,但是这些sql文件由于语法原因无法导入到mysql

我已经阅读了这些解决方案:

Quick easy way to migrate SQLite3 to 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

我尝试了其中一些,但似乎不起作用。我没有足够的内存来搜索和替换string

是否有一些有效的方法可以迁移大型sqlite 数据库?

【问题讨论】:

您能否分两步处理结构和数据?导出创建表的语句,并根据语法差异在必要时修改这些语句。然后将数据导出为 CSV,以便您可以将其导入到已经准备好的 MySQL 表中(使用LOAD DATA INFILE 或类似的东西。) 您应该尝试一些多数据库管理应用程序,例如 Navicat Premium,它可以在各种数据库类型之间迁移数据 - navicat.com/products/navicat-premium 谢谢,@CBroe!我不太确定。如果您查看redmine.org/boards/2/topics/12793 中的步骤,不仅是语句,还有值和符号。该脚本逐行进行。 谢谢,@OndřejŠotek!我想......购买的解决方案就可以了。忘了补充问题,我正在寻找一些免费的解决方案...不要认为我的主管愿意为此支付 600 美元... 【参考方案1】:

显然我没有使用http://www.redmine.org/boards/2/topics/12793 中的所有脚本,我只使用了the latest script by Peter sørensen,它无法处理大文件,因为控制台返回“Killed”。我想这与临时文件操作有关。

Pavel Medvedev's script 解决了我的问题。尽管彼得的帖子说更新的脚本处理“当刺痛跨越多行时,并非所有都转换为正确的 mysql 值的问题”。我的 sql 文件有多行字符串,Pavel 的脚本可以处理它。这里没有问题。也许彼得提到的问题会发生在某人的文件中。

【讨论】:

以上是关于大型sqlite数据库到mysql的主要内容,如果未能解决你的问题,请参考以下文章

如何将大型 JSON 数据从服务器存储到 SQLITE Android?

将大型数组缓存到 SQLite - Java/Android

SQLite:即使有索引,大型数据库中的查询也非常慢

sqlite的操作

Python CSV 到 SQLite

Linux下轻量级数据库-SQLite3(嵌入式设备)