开发者社区> 问答> 正文

如何从MySQL 迁移数据 到PostgreSQL

如何从MySQL 迁移数据 到PostgreSQL

展开
收起
德哥,digoal 2015-12-22 11:02:45 10432 0
4 条回答
写回答
取消 提交回答
    1. 导出mysql表定义(无数据)
    2. --no-data [dbname] >dbdef.sql
    3. 使用mysql2postgres把脚本转换为pgsql
    4. 上面生成的脚本还不一定很完美,可以尝试导入pgsql,调试错误并手动修改之。我遇到的问题就只有一个,mysql列定义中的zerofill需要手工去掉。一些unsinged定义会生成constraint,如果不需要可以去掉。另外,trigger都有问题,只能后面手工重建
    5. 导出mysql数据:
    6. -v -nt --complete-insert=TRUE --compact --no-create-info --skip-quote-names [dbname] >dbdata.sql

    老一些版本的pgsql如果不支持批量插入的话还需要加上--extended-insert=FALSE,这个性能损失巨大。

    1. 转义符
      mysql默认字符串里的''是转义符,而pgsql默认不是,修改postgresql.conf:

    backslash_quote = on
    escape_string_warning = off
    standard_conforming_strings = off
    数据导入完成后可以改回默认值。

    2019-07-17 18:20:34
    赞同 展开评论 打赏
  • PostgreSQL你值得拥有。

    MYSQL迁移到PostgreSQL,可以参考使用阿里云数据库团队的开源项目rds_dbsync,其中MySQL -> PostgreSQL/Greenplum(binlog_minner binlog_loader)实现基于 MySQL binlog 解析的增量数据同步,其github地址为:

    https://github.com/aliyun/rds_dbsync/blob/master/README.md

    欢迎提交ISSUER进行讨论。

    2019-07-17 18:20:34
    赞同 展开评论 打赏
  • 公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.

    可以用mysql_fdw,在PostgreSQL中创建mysql外部表,直接访问mysql的数据,用insert into local_table select * from fdw_table;的方式迁移。

    http://pgxn.org/tag/fdw

    https://wiki.postgresql.org/wiki/Fdw

    2019-07-17 18:20:34
    赞同 展开评论 打赏
  • 阿里云数据库团队产品与内核开发,HybridDB for PostgreSQL / RDS for PostgreSQL / RDS for PPAS
    2019-07-17 18:20:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载

相关镜像