Amazon Redshift データから無効な文字を削除する方法を教えてください。

最終更新日: 2020 年 2 月 10 日

Amazon Redshift データに無効な文字が含まれています。それらを削除する方法を教えてください。

簡単な説明

データに null、bell、escape 文字などの印刷不可能な ASCII 文字が含まれている場合、データの取得や Amazon Simple Storage Service (Amazon S3) へのデータのアンロードに問題がある可能性があります。たとえば、「abc\0def」などの null ターミネータを含む文字列は、null ターミネータで切り捨てられ、データが不完全になります。

解決方法

無効な文字を削除するには、TRANSLATE 関数を使用します。次の例では、データに「abc\u0000def」が含まれています。TRANSLATE 関数は、null 文字「\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)

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合