我正在尝试使用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.
关于此问题的想法?预先谢谢你
答案 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。替换:)