将mysql二进制转换为PostgreSQL bytea

1 mysql postgresql data-structures

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

我在MySQL二进制字段转换方面遇到麻烦。

Bag*_*aja 5

binaryMySQL bytea中的类型等效于PostgreSQL。


您可以使用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;
Run Code Online (Sandbox Code Playgroud)

在您的终端中运行它:

pgloader test.load
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用 mysqldump

1.使用十六进制选项将其转储

mysqldump -u username -p -h host --skip-quote-names --hex-blob --skip-triggers \
--compact --no-create-info your_db your_table > prepg.dump
Run Code Online (Sandbox Code Playgroud)

2.执行sed,以便可以将其插入到您的bytea键入列

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

3.加载到PostgreSQL表中

\i '/path_to_file/pg.dump'
Run Code Online (Sandbox Code Playgroud)

参考