是否有用于将MySQL数据库转换为PostgreSQL的命令行工具?我也想知道是否有一种使用普通mysqldump
命令转换数据库的方法。
是否有用于将MySQL数据库转换为PostgreSQL的命令行工具?我也想知道是否有一种使用普通mysqldump
命令转换数据库的方法。
Answers:
你有没有尝试过:
mysqldump --compatible=postgresql dbname > export.sql
然后这样做逃避报价
sed "s/\\\'/\'\'/g" export.sql > export1.sql
可能需要更多按摩,因此请更仔细地查看mysqldump doco。
mysqldump
。syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
这里有一些开源工具,这些工具可能非常有用:
FromMySqlToPostgreSql
是一个功能广泛的工具,非常易于使用。
它可以映射数据类型,完全像在MySQL数据库中一样迁移约束,索引,PK和FK。
它在后台使用PostgreSQL COPY,因此数据传输非常快。
用PHP(> = 5.4)编写的FromMySqlToPostgreSql。
pgloader 是使用COPY命令的PostgreSQL数据加载工具。相对于仅使用它的主要优势
COPY
要么 \copy
,并通过使用Foreign Data Wrapper进行交易,这是它的事务行为,其中pgloader将保留一个单独的拒绝数据文件,但会继续尝试在数据库中复制良好的数据。PostgreSQL的默认行为是事务性的,这意味着输入数据(文件或远程数据库)中的任何错误行都将停止表的整个批量加载。pgloader还实现了数据重新格式化,一个典型的例子是将MySQL datestamps 0000-00-00和0000-00-00 00:00:00转换为PostgreSQL。NULL
值(因为我们的日历从未有零年)。
我最近使用了DBConvert的一个非免费工具将访问数据库转换为postgres,发现与我浪费时间免费尝试可靠地花费的时间相比,这笔钱物有所值。我没有使用过用于MySQL <-> postgres的类似工具,但是除非您只对命令行工具感兴趣,否则可能值得考虑。
如果您想知道我与他们没有任何关系:-)
例如,您可以使用EnterpriseDB迁移向导。
它可以象征性地迁移OracleDB。但是对于Mysql,它有一些限制,例如,它不支持视图,触发器,存储过程。
有关更多信息,请参见EDB Migration Toolkit。不确定,但是可以迁移mysql-> oracle-> postgresql来保存您的存储过程(如果它们存在的话)。
Grep this:数据库和SQL迁移工具
这只是添加到现有答案中,这有助于我找到此解决方案。我使用FromMySqlToPostgreSql。您需要做的就是下载并提取FromMySqlToPostgreSql,复制示例配置文件,在其中设置数据库连接值,然后使用以下命令运行索引文件:
php index.php config.xml
简单而有效!
有一个开源工具可提供将MySQL数据库转换为包含索引,fks和数据的Postgresql数据库的功能。
https://github.com/ggarri/mysql2psql
该工具还允许定义架构更改,以便您可以在运行时对当前架构进行一些升级。