Comment supprimer les caractères non valides de mes données Amazon Redshift ?

Date de la dernière mise à jour : 10/02/2020

Mes données Amazon Redshift contiennent des caractères non valides. Comment les supprimer ?

Brève description

Si vos données contiennent des caractères ASCII non imprimables, tels que des caractères nul, d'appel ou d'échappement, vous pouvez avoir des difficultés à récupérer les données ou à les décharger dans Amazon Simple Storage Service (Amazon S3). Par exemple, une chaîne qui contient un caractère nul tel que « abc\0def » est tronquée au niveau de ce caractère, entraînant ainsi des données incomplètes.

Solution

Utilisez la fonction TRANSLATE pour supprimer le caractère non valide. Dans l'exemple suivant, les données contiennent « abc\u0000def ». La fonction TRANSLATE supprime le caractère nul « \u0000 » et le remplace par une valeur vide, ce qui la supprime de la chaîne :

admin@testrs=# select a,translate(a,chr(0),'') from invalidstring;
   a    | translate 
--------+-----------
 abc    | abcdef
 abcdef | abcdef
(2 rows)

Pour supprimer des caractères non valides spécifiés de toutes les lignes d'une table, exécutez la commande UPDATE avec la fonction TRANSLATE comme illustré dans l'exemple suivant :

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)

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?