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

所要時間1分
0

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)

関連情報

CHR 関数

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ