如何修复“八位位组序列#(130)无法解码”。在pgloader中

时间:2019-04-11 18:36:19

标签: postgresql sqlite pgloader

我正在尝试使用pgloader将数据库从sqlite迁移到postgresql。 我的sqlite数据库是data.db,所以我尝试了

pgloader ./var/data.db postgres://***@ec2-54-83-50-174.compute-1.amazonaws.com:5432/mydb?sslmode=require

输出:

pgloader version 3.6.1
sb-impl::*default-external-format* :UTF-8
tmpdir: #P"/var/folders/65/x6spw10s4jgd3qkhdq96bk8c0000gn/T/"
KABOOM!

2019-04-11T19:22:47.022000+01:00 NOTICE Starting pgloader, log system is ready.

FATAL error: :UTF-8 stream decoding error on #<SB-SYS:FD-STREAM for "file /Users/mackbookpro/Desktop/dev/www/Beyti/var/data.db" {1005892A93}>: the octet sequence #(130) cannot be decoded.

Date/time: 2019-04-11-18:22An unhandled error condition has been signalled: :UTF-8 stream decoding error on #<SB-SYS:FD-STREAM for "file /Users/mackbookpro/Desktop/dev/www/Beyti/var/data.db" {1005892A93}>: the octet sequence #(130) cannot be decoded.

关于此问题的想法?预先谢谢你

1 个答案:

答案 0 :(得分:0)

这是字符编码问题。

在我的案例中,罪魁祸首“八位位组序列#(130)”对应于“é”,其编码为\ x82。 iconv失败。 我在字节流中用\ x65(ascii char“ e”)替换了损坏的\ x82,然后退出了。

<bad_file xxd -c1 -p | sed s/82/65/ | xxd -r -p > good_new_file

(在irc freenode #gcu上为Natacha喝彩) 编辑:法语问题? #133“à”的相同问题,相同的解决方案\ x85-> \ x61

编辑2:我刚刚发现了一些概括: pgloader所指的“八位位组序列”是ascii table的小数位。当您在“八位位组序列”中高于127时,您将进入扩展的ascii表并生成错误。 我刚遇到#144问题?是\ x90。替换:)