sql - 编码“UTF8”的无效字节序列
问题描述
我正在尝试使用gpload功能将 3GB(2400 万行)csv 文件加载到 greenplum 数据库,但我不断收到以下错误
错误 -
invalid byte sequence for encoding "UTF8": 0x8d
我尝试了 Mike 提供的解决方案,但对我来说,我的 client_encoding 和文件编码已经相同。两者都是UNICODE。
数据库 -
show client_encoding;
"UNICODE"
文件 -
file my_file_name.csv
my_file_name.csv: UTF-8 Unicode (with BOM) text
我也浏览了 Greenplum 的文档,里面说外部文件和数据库的编码应该匹配。它在我的情况下是匹配的,但不知何故它失败了。
我也上传了类似的小文件(相同的 UTF-8 Unicode(带 BOM)文本)
任何帮助表示赞赏!
解决方案
张贴在另一个线程 - 使用iconv
命令从文件中删除这些字符。Greenplum 默认使用字符集进行实例化UTF-8
,并且要求所有字符都是指定字符集。您还可以选择使用 EXTERNAL TABLE 的 LOG ERRORS 子句记录这些错误。这将捕获不良数据并允许您继续设置在创建期间指定的 LIMIT。
iconv -f utf-8 -t utf-8 -c file.txt
将清理您的 UTF-8 文件,跳过所有无效字符。
-f is the source format
-t the target format
-c skips any invalid sequence
推荐阅读
- java - 更新声音级别会冻结我的应用程序(我正在使用 handler.post)
- r - R编码由分隔符连接的分类变量
- audio - window.webkitAudioContext 在 Safari 上不起作用
- php - 获取随机日、月、年、星期几
- java - 处理这些 if 子句的更简洁的方法?
- php - 网站所有控制者的呼叫服务
- asp.net - 为什么在页面级别撤销授权后,CheckUrlAccessForPrincipal 仍然返回 true?
- rabbitmq - RabbitMQ 交换队列最大长度
- python - 一步过滤 pandas GroupBy 输出(方法链接)
- microservices - 微服务中的共享库