我正在尝试使用pgloader将数据库从sqlite迁移到postgresql。
我的sqlite db是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.

关于这个问题的想法?提前谢谢你

最佳答案

这是一个字符编码问题。
罪魁祸首“octet sequence#(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上为Natacha干杯#gcu:)
编辑:法文版?与“133”相同的问题,相同的解决方案\x85->\x61
编辑2:我刚刚发现了一个小小的概括:
pgloader所指的“八进制序列”是指ascii table的十进制排序。当“八位字节序列”中的值高于127时,将进入扩展的ascii表并生成错误。
我刚和144有问题?它是\x90。替换:)

关于postgresql - 如何在pgloader中修复“八位字节序列#(130)无法解码。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55639137/

10-10 06:47