我拼命寻找一个转换工具,将一个大的mysql数据库转换为postgresql。我需要的工具/脚本是:
- 自由
- 在Linux下工作
- 易于使用,不会出错
- 您实际上已尝试并确认有效
- 最好不要用Java或Ruby编写
我尝试了此处列出的其他工具,但没有一个适合我。
先感谢您。
我拼命寻找一个转换工具,将一个大的mysql数据库转换为postgresql。我需要的工具/脚本是:
我尝试了此处列出的其他工具,但没有一个适合我。
先感谢您。
Answers:
两种截然不同的数据库管理系统之间迁移需要大量的不仅仅是迁移数据。但是,数据迁移通常是最容易的部分。
我尝试过的方法是免费的,我可以确认它是否有效:
如果您依靠MySQL的行为来接受非法数据(例如2月31日),则导入数据实际上可能会很困难。
我的猜测是,这比搜索工具,评估一堆工具然后尝试理解您选择的工具要快。但这取决于您指的是哪种“大”。如果数百个表很大,这可能不可行。如果big仅指行数,则这可能是最快的方法。
有一些工具可以以DBMS独立(XML)格式转储数据库模式,例如Liquibase,SchemaSpy或WbSchemaReport。使用Liquibase可能是最容易使用的。其他人将需要一些手工编写/扩展XSLT来转换生成的XML。
如果您在MySQL中使用触发器和存储过程,那么我相信没有任何自动化工具可以转换它们而无需随后进行大量手动修复-然后生成的过程可能不会使用目标DBMS的任何高级功能。
最近不得不这样做,并且由于要花很长时间才能找到工具并且可以使用它进行操作,因此我亲自使用vim和replacement-foo进行了操作。
INT NOT NULL AUTO_INCREMENT
(或类似的东西)SERIAL
TEXT
(无速度差在使用TEXT
,VARCHAR
或类似的)
`ENGINE InnoDB
(或其他内容)UNSIGNED
BYTEA
'
而不是其他任何东西CONCAT
作为非标准字符串连接的后备。 'string' || ' string'
"
这些子弹中的每一个都应进行一次替换。
我出口的模式和数据seperatly。确保您使用INSERT
而不是COPY
。如果没有新事物发生,则数据(几乎)无需清理。确保一切正常UTF-8
。使用2个单独的文件,该架构变得更易于管理,并且您没有1GB的文件可以编辑。
加载架构时,您会获得非常详细的错误信息,因此调试应该非常简单。
我从未尝试过将它扔出去,但是Tungesten Replicator可能会做您想要的。它主要是一个复制工具,但我认为它可能具有引导过程,至少可以帮助您处理数据。