大型sqlite数据库到mysql
Posted
技术标签:
【中文标题】大型sqlite数据库到mysql【英文标题】:large sqlite database to mysql 【发布时间】:2015-08-11 12:11:16 【问题描述】:我的 CentOS 7 sever
上有 3 个 sqlite3 数据库文件,从 170G
到 1.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?