我的 Amazon Redshift 数据中存在无效字符。如何删除它们?
简短描述
如果您的数据中包含不可打印的 ASCII 字符(例如空字符、响铃字符或转义字符),则可能无法检索数据或无法将数据卸载到 Amazon Simple Storage Service (Amazon S3)。例如,如果一个字符串包含空终止符(例如“abc\0def”),则会在空终止符处被截断,从而导致数据不完整。
解决方案
使用 TRANSLATE 函数删除无效字符。在以下示例中,数据包含“abc\u0000def”。TRANSLATE 函数会删除空字符“\u0000”并将其替换为空值,这样会将其从字符串中删除:
admin@testrs=# select a,translate(a,chr(0),'') from invalidstring;
a | translate
--------+-----------
abc | abcdef
abcdef | abcdef
(2 rows)
要从表的所有行中删除指定的无效字符,请使用 TRANSLATE 函数运行 UPDATE 命令,如此示例所示:
admin@testrs=# select * from invalidstring;
a
--------
abc
abcdef
(2 rows)
admin@testrs=# update invalidstring set a=translate(a,chr(0),'') where a ilike '%'||chr(0)||'%';
UPDATE 1
admin@testrs=# select * from invalidstring;
a
--------
abcdef
abcdef
(2 rows)
相关信息
CHR 函数