Amazon Redshift のデータから無効な文字を削除するにはどうすればよいですか。

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

Amazon Redshift データに無効な文字が含まれています。これらはどのように削除すればよいですか。

簡単な説明

データに null 文字、ベル文字、またはエスケープ文字などの印刷不能な 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)

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


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