将mysql二进制转换为postgresql bytea

时间:2014-11-18 09:18:18

标签: mysql postgresql data-structures

从mysql导出数据并在postgresql中导入数据的最简单方法是什么?

我在使用MySQL二进制字段转换时遇到问题。

2 个答案:

答案 0 :(得分:4)

在PostgreSQL中,MySQL中的binary类型相当于bytea


您可以使用pgloader(最简单的方式)

安装pgloader后,创建简单脚本test.load

load database  
from mysql://username:password@host/database_name
into postgresql://postgres:postgres@localhost/database_name

WITH include drop, create tables, create indexes, reset sequences

  SET maintenance_work_mem to '128MB',
      work_mem to '12MB'

 CAST type binary TO bytea drop typemod  using byte-vector-to-bytea;

在您的终端中运行:

pgloader test.load

另一种方法是使用mysqldump

<强> 1。使用hex-blob选项转储

mysqldump -u username -p -h host --skip-quote-names --hex-blob --skip-triggers \
--compact --no-create-info your_db your_table > prepg.dump

<强> 2。请执行此操作以便将其插入bytea类型列

sed "s/0x\([0-9A-F]*\)/decode('\1','hex')/g" prepg.dump > pg.dump

第3。加载到PostgreSQL表中

\i '/path_to_file/pg.dump'

Reference

答案 1 :(得分:0)

使用编辑器生成数据库的mysql脚本,然后尝试使用其中一个sql转换器。我个人之前尝试过这个转换器,效果很好:http://www.sqlines.com/online