Paramètres de conversion de données - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Paramètres de conversion de données

Lors du chargement de la table, COPY tente de convertir implicitement les chaînes des données source vers le type de données de la colonne cible. Si vous devez spécifier une conversion qui est différente du comportement par défaut, ou si la conversion par défaut entraîne des erreurs, vous pouvez gérer les conversions de données en spécifiant les paramètres suivants. Pour plus d'informations sur la syntaxe de ces paramètres, consultez COPYla section syntaxe.

Paramètres de conversion de données
ACCEPTANYDATE

Autorise n’importe quel format de date, y compris les formats non valides comme 00/00/00 00:00:00, à charger sans générer d’erreur. Ce paramètre s'applique uniquement aux DATE colonnes TIMESTAMP et. Utilisez toujours ACCEPTANYDATE avec le DATEFORMAT paramètre. Si le format de date des données ne correspond pas à la DATEFORMAT spécification, Amazon Redshift insère une NULL valeur dans ce champ.

ACCEPTINVCHARS[AS] ['replacement_char']

Permet le chargement des données dans VARCHAR des colonnes même si les données contiennent UTF 8 caractères non valides. Lorsqu'il ACCEPTINVCHARS est spécifié, COPY remplace chaque caractère UTF -8 non valide par une chaîne de longueur égale composée du caractère spécifié par replacement_char. Par exemple, si le caractère de remplacement est ’^’, un caractère non valide de trois octets sera remplacé par ’^^^’.

Le caractère de remplacement peut être n'importe quel ASCII caractère saufNULL. La valeur par défaut est un point d’interrogation ( ? ). Pour plus d'informations sur les caractères UTF -8 non valides, consultezErreurs de chargement de caractères multioctets.

COPYrenvoie le nombre de lignes contenant UTF -8 caractères non valides et ajoute une entrée à la table STL_REPLACEMENTS système pour chaque ligne affectée, jusqu'à un maximum de 100 lignes pour chaque tranche de nœud. Les caractères UTF -8 supplémentaires non valides sont également remplacés, mais ces événements de remplacement ne sont pas enregistrés.

S'il ACCEPTINVCHARS n'est pas spécifié, COPY renvoie une erreur chaque fois qu'il rencontre un caractère UTF -8 non valide.

ACCEPTINVCHARSest valide uniquement pour les VARCHAR colonnes.

BLANKSASNULL

Charge les champs vides, composés uniquement d'espaces blancs, sous forme deNULL. Cette option s'applique uniquement aux VARCHAR colonnes CHAR et. Les champs vides pour les autres types de données, tels queINT, sont toujours chargés avecNULL. Par exemple, une chaîne contenant trois espaces consécutifs (et aucun autre caractère) est chargée en tant queNULL. Le comportement par défaut, sans cette option, consiste à charger les espaces tels quels.

DATEFORMAT[AS] {'dateformat_string' | 'auto'}

Si non DATEFORMAT est spécifié, le format par défaut est'YYYY-MM-DD'. Par exemple, un autre format valide est 'MM-DD-YYYY'.

Si la COPY commande ne reconnaît pas le format de vos valeurs de date ou d'heure, ou si vos valeurs de date ou d'heure utilisent des formats différents, utilisez l''auto'argument avec le TIMEFORMAT paramètre DATEFORMAT ou. L''auto'argument reconnaît plusieurs formats qui ne sont pas pris en charge lors de l'utilisation d'une TIMEFORMAT chaîne DATEFORMAT et. Le mot-clé 'auto' est sensible à la casse. Pour plus d'informations, consultez Utilisation de la reconnaissance automatique avec DATEFORMAT et TIMEFORMAT.

Le format de date peut inclure des informations de temps (heure, minutes, secondes), mais ces informations sont ignorées. Le mot-clé AS est facultatif. Pour de plus amples informations, veuillez consulter DATEFORMATet TIMEFORMAT cordes.

EMPTYASNULL

Indique qu'Amazon Redshift doit charger les champs vides CHAR et les VARCHAR champs sous la forme. NULL Les champs vides pour les autres types de données, tels queINT, sont toujours chargés avecNULL. Les champs vides surviennent lorsque les données contiennent deux délimiteurs de suite sans caractère entre les délimiteurs. EMPTYASNULLet NULL AS "(chaîne vide) produisent le même comportement.

ENCODING[AS] encodage de fichier

Spécifie le type d’encodage des données de chargement. La COPY commande convertit les données du codage spécifié en UTF -8 lors du chargement.

Les valeurs valides pour file_encoding sont les suivantes :

  • UTF8

  • UTF16

  • UTF16LE

  • UTF16BE

La valeur par défaut est UTF8.

Les noms de fichiers source doivent utiliser le codage UTF -8.

Les fichiers suivants doivent utiliser le codage UTF -8, même si un encodage différent est spécifié pour les données de chargement :

  • Fichiers manifestes

  • JSONPathsfichiers

Les chaînes d'arguments fournies avec les paramètres suivants doivent utiliser UTF -8 :

  • FIXEDWIDTH« fixedwidth_spec »

  • ACCEPTINVCHARS'replacement_char'

  • DATEFORMAT'dateformat_string'

  • TIMEFORMAT'timeformat_string'

  • NULLEN TANT QUE « null_string »

Les fichiers de données à largeur fixe doivent utiliser le codage UTF -8. Les largeurs des champs dépendent du nombre de caractères, et non du nombre d’octets.

Toutes les données de chargement doivent utiliser l’encodage spécifié. Si COPY un encodage différent est détecté, il ignore le fichier et renvoie une erreur.

Si vous le spécifiezUTF16, vos données doivent avoir un point d'ordre d'octet (BOM). Si vous savez si vos données UTF -16 sont de type little-endian (LE) ou big-endian (BE), vous pouvez utiliser UTF16LE ouUTF16BE, indépendamment de la présence d'un. BOM

ESCAPE

Lorsque ce paramètre est spécifié, la barre oblique inverse (\) dans les données d’entrée est considérée comme un caractère d’échappement. Le caractère qui se trouve immédiatement après la barre oblique inverse est chargé dans la table comme faisant partie de la valeur de la colonne actuelle, même s’il s’agit d’un caractère qui a normalement une fonction particulière. Par exemple, vous pouvez utiliser ce paramètre pour insérer le caractère délimiteur, un guillemet anglais, un caractère de saut de ligne intégré, ou le caractère d’échappement lui-même lorsque l’un de ces caractères fait légitimement partie d’une valeur de la colonne.

Si vous spécifiez le ESCAPE paramètre en combinaison avec le REMOVEQUOTES paramètre, vous pouvez éviter et conserver les guillemets ('ou") qui pourraient sinon être supprimés. La chaîne vide par défaut, \N, fonctionne telle quelle, mais elle peut également être insérée dans les données d’entrée en tant que \\N. Tant que vous ne spécifiez pas de chaîne nulle alternative avec le paramètre NULL AS \N et que vous ne \\N produisez pas les mêmes résultats.

Note

Le caractère de contrôle 0x00 (NUL) ne peut pas être échappé et doit être supprimé des données d'entrée ou converti. Ce caractère est traité comme un marqueur de fin d'enregistrement (EOR), ce qui entraîne la troncation du reste de l'enregistrement.

Vous ne pouvez pas utiliser le ESCAPE paramètre pour les FIXEDWIDTH chargements et vous ne pouvez pas spécifier le caractère d'échappement lui-même ; le caractère d'échappement est toujours le caractère de barre oblique inverse. En outre, vous devez vous assurer que les données d’entrée contiennent le caractère d’échappement aux endroits appropriés.

Voici quelques exemples de données d'entrée et de données chargées qui en résultent lorsque le ESCAPE paramètre est spécifié. Le résultat pour la ligne 4 suppose que le REMOVEQUOTES paramètre est également spécifié. Les données d’entrée se composent de deux champs séparés par une barre verticale :

1|The quick brown fox\[newline] jumped over the lazy dog. 2| A\\B\\C 3| A \| B \| C 4| 'A Midsummer Night\'s Dream'

Les données chargées dans la colonne 2 ressemblent à ceci :

The quick brown fox jumped over the lazy dog. A\B\C A|B|C A Midsummer Night's Dream
Note

L’application du caractère d’échappement aux données d’entrée pour une charge est de la responsabilité de l’utilisateur, Il existe une exception à cette exigence lorsque vous rechargez des données précédemment déchargées avec le ESCAPE paramètre. Dans ce cas, les données contiennent déjà les caractères d’échappement nécessaires.

Le ESCAPE paramètre n'interprète pas la notation octale, hexadécimale, Unicode ou autre notation de séquence d'échappement. Par exemple, si vos données source contiennent la valeur de fil octal (\012) et que vous essayez de charger ces données avec le ESCAPE paramètre, Amazon Redshift charge la 012 valeur dans la table et n'interprète pas cette valeur comme un flux linéaire échappé.

Pour insérer des caractère de saut ligne dans les données qui proviennent de plateformes Microsoft Windows, vous devrez peut-être utiliser deux caractères d’échappement : un pour le retour chariot et un autre pour le saut de ligne. Sinon, vous pouvez supprimer les retours chariot avant de charger le fichier (par exemple, en utilisant l’utilitaire dos2unix).

EXPLICIT_IDS

Utilisez EXPLICIT _ IDS avec les tables comportant des IDENTITY colonnes si vous souhaitez remplacer les valeurs générées automatiquement par des valeurs explicites issues des fichiers de données source des tables. Si la commande inclut une liste de colonnes, cette liste doit inclure les IDENTITY colonnes pour utiliser ce paramètre. Le format de données pour IDS les valeurs EXPLICIT _ doit correspondre au IDENTITY format spécifié par la CREATE TABLE définition.

Lorsque vous exécutez une COPY commande sur une table avec l'IDSoption EXPLICIT _, Amazon Redshift ne vérifie pas l'unicité des IDENTITY colonnes de la table.

Si une colonne est définie avec GENERATED BY DEFAULT ASIDENTITY, elle peut être copiée. Les valeurs sont générées ou mises à jour avec des valeurs que vous fournissez. L'IDSoption EXPLICIT _ n'est pas obligatoire. COPYne met pas à jour le filigrane supérieur de l'identité.

Pour un exemple de COPY commande utilisant EXPLICIT _IDS, consultezCharger VENUE avec des valeurs explicites pour une IDENTITY colonne.

FILLRECORD

Autorise le chargement des fichiers de données lorsqu’il manque des colonnes contiguës à la fin de certains des enregistrements. Les colonnes manquantes sont chargées en tant queNULLs. Pour le texte et les CSV formats, si la colonne manquante est une VARCHAR colonne, des chaînes de longueur nulle sont chargées à la place deNULLs. NULLsPour charger du texte dans des VARCHAR colonnesCSV, spécifiez le EMPTYASNULL mot clé. NULLla substitution ne fonctionne que si la définition de colonne le permetNULLs.

Par exemple, si la définition de table contient quatre CHAR colonnes nulles et qu'un enregistrement contient les valeursapple, orange, banana, mango, la COPY commande peut charger et renseigner un enregistrement contenant uniquement les valeursapple, orange. Les CHAR valeurs manquantes seraient chargées en tant que NULL valeurs.

IGNOREBLANKLINES

Ignore les lignes vides qui contiennent uniquement un saut de ligne dans un fichier de données et n’essaie pas de les charger.

IGNOREHEADER[AS] number_rows

Traite les number_rows spécifiées comme un en-tête de fichier et ne les charge pas. Permet IGNOREHEADER d'ignorer les en-têtes de tous les fichiers lors d'un chargement parallèle.

NULLEN TANT QUE « null_string »

Charge les champs qui correspondent à null_string asNULL, où null_string peut être n'importe quelle chaîne. Si vos données incluent un terminateur nul, également appelé NUL (UTF-8 0000) ou zéro binaire (0x000), COPY traitez-le comme n'importe quel autre caractère. Par exemple, un enregistrement contenant « 1 » || NUL || « 2 » est copié sous forme de chaîne de 3 octets. Si un champ contient uniquementNUL, vous pouvez utiliser NULL AS pour remplacer le terminateur nul NULL par en spécifiant '\0' ou, par '\000' exemple, NULL AS '\0' ou. NULL AS '\000' Si un champ contient une chaîne qui se termine NUL par un NULL AS spécifié, la chaîne est insérée par NUL à la fin. N’utilisez pas ’\n’ (saut de ligne) pour la valeur null_string. Amazon Redshift réserve ’\n’ pour l’utiliser en tant que délimiteur de ligne. La valeur par défaut null_string est '\N’.

Note

Si vous tentez de charger des valeurs nulles dans une colonne définie comme NOTNULL, la COPY commande échouera.

REMOVEQUOTES

Supprime les guillemets des chaînes dans les données entrantes. Tous les caractères compris entre les guillemets, y compris les délimiteurs, sont conservés. Si une chaîne commence par un guillemet simple ou double mais qu'aucune marque de fin ne correspond, la COPY commande ne parvient pas à charger cette ligne et renvoie une erreur. Le tableau suivant présente quelques exemples simples de chaînes contenant des guillemets et les valeurs chargées en conséquence.

Chaîne d’entrée Valeur chargée avec REMOVEQUOTES option
"The delimiter is a pipe (|) character" The delimiter is a pipe (|) character
’Black’ Black
"White" White
Blue’ Blue’
Blue’ Valeur non chargée : condition d’erreur
"Blue Valeur non chargée : condition d’erreur
’ ’ ’Black’ ’ ’ ’ ’Black’ ’
' ' <white space>
ROUNDEC

Arrondit les valeurs numériques lorsque l’échelle de la valeur d’entrée est supérieure à l’échelle de la colonne. Par défaut, COPY tronque les valeurs lorsque cela est nécessaire pour les adapter à l'échelle de la colonne. Par exemple, si une valeur de 20.259 est chargée dans une colonne DECIMAL (8,2), COPY tronque la valeur par défaut. 20.25 Si elle ROUNDEC est spécifiée, COPY arrondit la valeur à20.26. La INSERT commande arrondit toujours les valeurs lorsque cela est nécessaire pour qu'elles correspondent à l'échelle de la colonne, de sorte qu'une COPY commande avec le ROUNDEC paramètre se comporte de la même manière qu'une INSERT commande.

TIMEFORMAT[AS] {'timeformat_string' | 'auto' | 'epochsecs' | 'epochmillisecs'}

Spécifie le format de l’heure. Si non TIMEFORMAT est spécifié, le format par défaut est YYYY-MM-DD HH:MI:SS pour les TIMESTAMP colonnes ou YYYY-MM-DD HH:MI:SSOF pour les TIMESTAMPTZ colonnes, où OF est le décalage par rapport au temps universel coordonné (UTC). Vous ne pouvez pas inclure de spécificateur de fuseau horaire dans timeformat_string. Pour charger TIMESTAMPTZ des données dans un format différent du format par défaut, spécifiez « auto » ; pour plus d'informations, consultezUtilisation de la reconnaissance automatique avec DATEFORMAT et TIMEFORMAT. Pour plus d’informations sur timeformat_string, consultez DATEFORMATet TIMEFORMAT cordes.

L''auto'argument reconnaît plusieurs formats qui ne sont pas pris en charge lors de l'utilisation d'une TIMEFORMAT chaîne DATEFORMAT et. Si la COPY commande ne reconnaît pas le format de vos valeurs de date ou d'heure, ou si vos valeurs de date et d'heure utilisent des formats différents, utilisez l''auto'argument avec le TIMEFORMAT paramètre DATEFORMAT ou. Pour de plus amples informations, veuillez consulter Utilisation de la reconnaissance automatique avec DATEFORMAT et TIMEFORMAT.

Si vos données source sont représentées sous forme d'époque, il s'agit du nombre de secondes ou de millisecondes écoulées depuis le 1er janvier 1970, UTC 00:00:00, spécifiez ou. 'epochsecs' 'epochmillisecs'

Les mots-clés 'auto', 'epochsecs', et 'epochmillisecs' sont sensibles à la casse.

Le mot-clé AS est facultatif.

TRIMBLANKS

Supprime les espaces blancs de fin d'une VARCHAR chaîne. Ce paramètre s'applique uniquement aux colonnes contenant un type de VARCHAR données.

TRUNCATECOLUMNS

Tronque les données des colonnes avec le nombre de caractères donné afin qu’il corresponde à la spécification de la colonne. S'applique uniquement aux colonnes de type VARCHAR ou CHAR et aux lignes d'une taille inférieure ou égale à 4 Mo.