如何删除 Amazon Redshift 数据中的无效字符?

上次更新时间:2020 年 2 月 10 日

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)

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?