Datenkonvertierungsparameter - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Datenkonvertierungsparameter

Beim Laden der Tabelle wird COPY versucht, die Zeichenketten in den Quelldaten implizit in den Datentyp der Zielspalte zu konvertieren. Wenn Sie eine Konvertierung angeben müssen, die sich vom Standardverhalten unterscheidet, oder wenn die Standardkonvertierung zu Fehlern führt, können Sie Datenkonvertierungen verwalten, indem Sie die folgenden Parameter angeben. Weitere Informationen zur Syntax dieser Parameter finden Sie unter COPYSyntax.

Datenkonvertierungsparameter
ACCEPTANYDATE

Ermöglicht das Laden jedes Datumsformats einschließlich ungültiger Formate wie 00/00/00 00:00:00, ohne dass ein Fehler generiert wird. Dieser Parameter gilt nur für DATE Spalten TIMESTAMP und. Immer ACCEPTANYDATE zusammen mit dem DATEFORMAT Parameter verwenden. Wenn das Datumsformat für die Daten nicht der DATEFORMAT Spezifikation entspricht, fügt Amazon Redshift einen NULL Wert in dieses Feld ein.

ACCEPTINVCHARS[AS] ['replacement_char']

Ermöglicht das Laden von Daten in VARCHAR Spalten, auch wenn die Daten ungültige UTF -8 Zeichen enthalten. Wenn ACCEPTINVCHARS angegeben, COPY ersetzt jedes ungültige UTF -8-Zeichen durch eine Zeichenfolge gleicher Länge, die aus dem durch replacement_char angegebenen Zeichen besteht. Wenn das Ersetzungszeichen beispielsweise ^ ist, wird ein ungültiges Zeichen mit drei Bytes durch ^^^ ersetzt.

Das Ersatzzeichen kann ein beliebiges Zeichen sein, außer. ASCII NULL Der Standardwert ist das Fragezeichen (?). ). Hinweise zu ungültigen UTF -8 Zeichen finden Sie unterFehler beim Laden von Multibyte-Zeichen.

COPYgibt die Anzahl der Zeilen zurück, die ungültige UTF -8 Zeichen enthielten, und fügt der STL_REPLACEMENTS Systemtabelle für jede betroffene Zeile einen Eintrag hinzu, bis zu einem Maximum von 100 Zeilen pro Node Slice. Zusätzliche ungültige UTF -8 Zeichen werden ebenfalls ersetzt, aber diese Ersetzungsereignisse werden nicht aufgezeichnet.

Wenn ACCEPTINVCHARS nicht angegeben, wird ein Fehler COPY zurückgegeben, wenn ein ungültiges Zeichen von UTF -8 gefunden wird.

ACCEPTINVCHARSist nur für VARCHAR Spalten gültig.

BLANKSASNULL

Lädt leere Felder, die nur aus Leerzeichen bestehen, alsNULL. Diese Option gilt nur für VARCHAR Spalten CHAR und. Leere Felder für andere Datentypen, wie z. B.INT, werden immer mit geladenNULL. Beispielsweise wird eine Zeichenfolge, die drei aufeinanderfolgende Leerzeichen (und keine anderen Zeichen) enthält, als geladenNULL. Das Standardverhalten (ohne Angabe dieser Option) besteht im Laden der Leerzeichen wie vorhanden.

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

Wenn kein angegeben DATEFORMAT ist, ist das Standardformat. 'YYYY-MM-DD' Ein alternatives gültiges Format ist beispielsweise 'MM-DD-YYYY'.

Wenn der COPY Befehl das Format Ihrer Datums- oder Uhrzeitwerte nicht erkennt oder wenn Ihre Datums- oder Uhrzeitwerte unterschiedliche Formate verwenden, verwenden Sie das 'auto' Argument mit dem TIMEFORMAT Parameter DATEFORMAT oder. Das 'auto' Argument erkennt mehrere Formate, die bei der Verwendung einer DATEFORMAT TIMEFORMAT UND-Zeichenfolge nicht unterstützt werden. Das Schlüsselwort 'auto' unterscheidet zwischen Groß- und Kleinschreibung. Weitere Informationen finden Sie unter Verwenden der automatischen Erkennung mit DATEFORMAT und TIMEFORMAT.

Das Datumsformat kann Zeitinformationen (Stunde, Minuten, Sekunden) enthalten. Diese Informationen werden jedoch ignoriert. Das Schlüsselwort AS ist optional. Weitere Informationen finden Sie unter DATEFORMATund TIMEFORMAT Zeichenketten.

EMPTYASNULL

Zeigt an, dass Amazon Redshift leere VARCHAR Felder CHAR und Felder als NULL laden soll. Leere Felder für andere Datentypen, wie z. B.INT, werden immer mit NULL geladen. Leere Felder treten auf, wenn Daten zwei aufeinanderfolgende Trennzeichen enthalten, ohne dass sich zwischen den Trennzeichen Zeichen befinden. EMPTYASNULLund NULL AS "(leere Zeichenfolge) erzeugen dasselbe Verhalten.

ENCODING[AS] Dateikodierung

Gibt den Kodierungstyp der Daten an, die geladen werden. Der COPY Befehl konvertiert die Daten aus der angegebenen Kodierung beim Laden in UTF -8.

Gültige Werte für file_encoding sind folgende:

  • UTF8

  • UTF16

  • UTF16LE

  • UTF16BE

  • ISO88591

Der Standardwert ist UTF8.

Quelldateinamen müssen die Kodierung UTF -8 verwenden.

Die folgenden Dateien müssen die Kodierung UTF -8 verwenden, auch wenn für die Ladedaten eine andere Kodierung angegeben ist:

  • Manifestdateien

  • JSONPathsDateien

Die Argumentzeichenfolgen, die mit den folgenden Parametern bereitgestellt werden, müssen UTF -8 verwenden:

  • FIXEDWIDTH„fixedwidth_spec

  • ACCEPTINVCHARS'Ersatzzeichen'

  • DATEFORMAT'Datumsformat_Zeichenfolge'

  • TIMEFORMAT'Zeitformat_Zeichenfolge'

  • NULLALS 'null_string'

Datendateien mit fester Breite müssen die Kodierung -8 verwenden. UTF Die Feldbreiten basieren auf der Anzahl der Zeichen, nicht der Bytes.

Alle geladenen Daten müssen die angegebene Kodierung verwenden. Wenn COPY auf eine andere Kodierung gestoßen wird, wird die Datei übersprungen und es wird ein Fehler zurückgegeben.

Wenn Sie angebenUTF16, müssen Ihre Daten eine Bytereihenfolgenmarkierung (BOM) haben. Wenn Sie wissen, ob es sich bei Ihren UTF -16-Daten um Little-Endian (LE) oder Big-Endian (BE) handelt, können Sie UTF16LE or UTF16BE verwenden, unabhängig vom Vorhandensein von a. BOM

Um ISO die ISO88591 Kodierung -8859-1 zu verwenden, geben Sie an. Weitere Informationen finden Sie unter ISO/IEC8859-1 in Wikipedia.

ESCAPE

Wenn dieser Parameter angegeben ist, wird das Backslash-Zeichen (\) in Eingabedaten als Escape-Zeichen behandelt. Das Zeichen, das dem Backslash-Zeichen folgt, wird als Teil des aktuellen Spaltenwerts in die Tabelle geladen, auch wenn es sich um ein Zeichen handelt, das normalerweise einem speziellen Zweck dient. Sie können diesen Parameter beispielsweise verwenden, um das Trennzeichen, ein Fragezeichen, ein eingebettetes Zeichen für neue Zeilen oder das Escape-Zeichen selbst mit einer Escape-Markierung zu markieren, wenn eines dieser Zeichen legitimer Teil eines Spaltenwerts ist.

Wenn Sie den ESCAPE Parameter zusammen mit dem REMOVEQUOTES Parameter angeben, können Sie Anführungszeichen ('oder"), die andernfalls entfernt werden könnten, maskieren und beibehalten. Die standardmäßige Null-Zeichenfolge \N funktioniert wie vorhanden, kann jedoch in den Eingabedaten ebenfalls mit einem Escape-Zeichen markiert werden: \\N. Solange Sie keine alternative Nullzeichenfolge mit dem NULL AS-Parameter angeben \N und \\N dieselben Ergebnisse erzielen.

Anmerkung

Das Steuerzeichen 0x00 (NUL) kann nicht maskiert werden und sollte aus den Eingabedaten entfernt oder konvertiert werden. Dieses Zeichen wird als Markierung für das Ende eines Datensatzes (EOR) behandelt, wodurch der Rest des Datensatzes gekürzt wird.

Sie können den ESCAPE Parameter nicht für FIXEDWIDTH Ladevorgänge verwenden, und Sie können das Escape-Zeichen selbst nicht angeben. Das Escape-Zeichen ist immer der umgekehrte Schrägstrich. Außerdem müssen Sie sicherstellen, dass die Eingabedaten das Escape-Zeichen an den richtigen Stellen enthalten.

Im Folgenden finden Sie einige Beispiele für Eingabedaten und die resultierenden geladenen Daten, wenn der ESCAPE Parameter angegeben wird. Das Ergebnis für Zeile 4 setzt voraus, dass der REMOVEQUOTES Parameter ebenfalls angegeben ist. Die Eingabedaten bestehen aus zwei Feldern, die durch das Pipe-Zeichen getrennt sind:

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'

Die Daten, die in Spalte 2 geladen wurden, sehen wie folgt aus:

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

Die Anwendung des Escape-Zeichens auf die Eingabedaten, die geladen werden sollen, liegt in der Verantwortung der Benutzer. Eine Ausnahme von dieser Anforderung ist das Neuladen von Daten, die zuvor mit dem ESCAPE Parameter entladen wurden. In diesem Fall enthalten die Daten die notwendigen Escape-Zeichen bereits.

Der ESCAPE Parameter interpretiert keine Oktal-, Hexadezimal-, Unicode- oder andere Escape-Sequenz-Notationen. Wenn Ihre Quelldaten beispielsweise den oktalen Zeilenvorschubwert (\012) enthalten und Sie versuchen, diese Daten mit dem ESCAPE Parameter zu laden, lädt Amazon Redshift den Wert 012 in die Tabelle und interpretiert diesen Wert nicht als Zeilenvorschub, der maskiert wird.

Um in Daten, die aus Microsoft Windows-Plattformen stammen, das Zeichen für neue Zeilen mit einem Escape-Zeichen zu markieren, müssen Sie möglicherweise zwei Escape-Zeichen verwenden: ein Zeichen für die Zeilenumschaltung und ein Zeichen für den Zeilen-Feed. Alternativ können Sie die Zeilenumschaltungen vor dem Laden der Datei entfernen (beispielsweise durch Verwendung des Hilfsprogramms dos2unix).

EXPLICIT_IDS

Verwenden Sie EXPLICIT _ für Tabellen IDS mit IDENTITY Spalten, wenn Sie die automatisch generierten Werte mit expliziten Werten aus den Quelldatendateien für die Tabellen überschreiben möchten. Wenn der Befehl eine Spaltenliste enthält, muss diese Liste die IDENTITY Spalten enthalten, um diesen Parameter verwenden zu können. Das Datenformat für EXPLICIT _ IDS -Werte muss dem in der CREATE TABLE Definition angegebenen IDENTITY Format entsprechen.

Wenn Sie einen COPY Befehl für eine Tabelle mit der IDS Option EXPLICIT _ ausführen, überprüft Amazon Redshift nicht die Eindeutigkeit der IDENTITY Spalten in der Tabelle.

Wenn eine Spalte mit GENERATED BY DEFAULT AS definiert istIDENTITY, kann sie kopiert werden. Die Werte werden mit den von Ihnen angegebenen Werten generiert oder aktualisiert. Die IDS Option EXPLICIT _ ist nicht erforderlich. COPYaktualisiert das Identity-Highwatermark nicht.

Ein Beispiel für einen COPY Befehl, der EXPLICIT _ verwendetIDS, finden Sie unterVENUEMit expliziten Werten für eine IDENTITY Spalte laden.

FILLRECORD

Ermöglicht das Laden von Datendateien, wenn am Ende einiger Datensätze angrenzende Spalten fehlen. Die fehlenden Spalten werden als geladenNULLs. Wenn es sich bei der fehlenden Spalte bei Text und CSV Formaten um eine VARCHAR Spalte handelt, werden stattdessen leere Zeichenketten geladen. NULLs Um aus Text und NULLs in VARCHAR Spalten zu ladenCSV, geben Sie das EMPTYASNULL Schlüsselwort an. NULLDie Ersetzung funktioniert nur, wenn die Spaltendefinition dies zulässtNULLs.

Wenn die Tabellendefinition beispielsweise vier CHAR Spalten enthält, für die NULL-Werte zulässig sind, und ein Datensatz die Werte enthältapple, orange, banana, mango, könnte der COPY Befehl einen Datensatz laden und ausfüllen, der nur die Werte enthält. apple, orange Die fehlenden CHAR Werte würden als NULL Werte geladen.

IGNOREBLANKLINES

Ignoriert leere Zeilen, die nur einen Zeilen-Feed in einer Datendatei enthalten, und versucht nicht, sie zu laden.

IGNOREHEADER[AS] number_rows

Behandelt die angegebene number_rows als Dateiheader und lädt sie nicht. Wird verwendetIGNOREHEADER, um Dateikopfzeilen in allen Dateien beim parallel Laden zu überspringen.

NULLALS 'null_string'

Lädt Felder, die mit null_string als übereinstimmenNULL, wobei null_string eine beliebige Zeichenfolge sein kann. Wenn Ihre Daten ein Nullabschlusszeichen enthalten, das auch als NUL (UTF-8 0000) oder binäre Null (0x000) bezeichnet wird, wird dieses Zeichen wie jedes andere Zeichen behandelt. COPY Beispielsweise wird ein Datensatz, der '1' || NUL || '2' enthält, als Zeichenfolge mit einer Länge von 3 Byte kopiert. Wenn ein Feld nur enthältNUL, können Sie NULL AS verwenden, um das Nullabschlusszeichen NULL durch die Angabe von '\0' oder zu ersetzen '\000' — zum Beispiel NULL AS '\0' oder. NULL AS '\000' Wenn ein Feld eine Zeichenfolge enthält, die mit NUL und NULL AS endet, wird die Zeichenfolge mit NUL am Ende eingefügt. Verwenden Sie für den null_string-Wert nicht '\n' (Zeilenumbruch). Amazon Redshift reserviert '\n' für die Verwendung als Zeilentrennzeichen. Der Standardwert für null_string ist '\N'.

Anmerkung

Wenn Sie versuchen, Nullen in eine Spalte zu laden, die als definiert ist NOTNULL, schlägt der COPY Befehl fehl.

REMOVEQUOTES

Entfernt in den eingehenden Daten Anführungszeichen, die Zeichenfolgen umschließen. Alle Zeichen innerhalb der Anführungszeichen einschließlich Trennzeichen bleiben bewahrt. Wenn eine Zeichenfolge ein einfaches oder doppeltes Anführungszeichen am Anfang, aber kein entsprechendes Endzeichen hat, kann der COPY Befehl diese Zeile nicht laden und gibt einen Fehler zurück. In der folgenden Tabelle werden einige einfache Beispiele für Zeichenfolgen mit Anführungszeichen und die entsprechenden geladenen Werte gezeigt.

Eingabezeichenfolge Geladener Wert mit REMOVEQUOTES Option
"The delimiter is a pipe (|) character" Das Trennzeichen ist ein Pipe-Zeichen (|)
'Schwarz' Schwarz
"Weiß" Weiß
Blau' Blau'
Blau' Wert nicht geladen: Fehlerbedingung
"Blue Wert nicht geladen: Fehlerbedingung
' ' 'Black' ' ' ' 'Schwarz' '
' ' <Leerzeichen>
ROUNDEC

Rundet numerische Werte auf, wenn die Skala des Eingabewerts größer als die Skala der Spalte ist. Standardmäßig werden COPY Werte bei Bedarf gekürzt, um sie an die Skalierung der Spalte anzupassen. Wenn beispielsweise ein Wert von in eine Spalte DECIMAL (8,2) geladen 20.259 wird, wird der Wert auf die COPY Standardeinstellung gekürzt. 20.25 Wenn angegeben, ROUNDEC wird der Wert auf COPY gerundet. 20.26 Der INSERT Befehl rundet Werte immer dann, wenn dies erforderlich ist, damit sie der Skalierung der Spalte entsprechen. Ein COPY Befehl mit dem ROUNDEC Parameter verhält sich also genauso wie ein INSERT Befehl.

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

Gibt das Zeitformat an. Falls kein Wert angegeben TIMEFORMAT ist, gilt das Standardformat YYYY-MM-DD HH:MI:SS für TIMESTAMP Spalten oder YYYY-MM-DD HH:MI:SSOF für TIMESTAMPTZ Spalten, wobei OF der Offset von Coordinated Universal Time () angegeben wird. UTC Sie können in der Zeitformatzeichenfolge keinen Zeitzonenspezifikator verwenden. Um TIMESTAMPTZ Daten in einem anderen Format als dem Standardformat zu laden, geben Sie 'auto' an. Weitere Informationen finden Sie unterVerwenden der automatischen Erkennung mit DATEFORMAT und TIMEFORMAT. Weitere Informationen zu timeformat_string finden Sie unter DATEFORMATund TIMEFORMAT Zeichenketten.

Das 'auto' Argument erkennt mehrere Formate, die bei Verwendung einer DATEFORMAT TIMEFORMAT UND-Zeichenfolge nicht unterstützt werden. Wenn der COPY Befehl das Format Ihrer Datums- oder Uhrzeitwerte nicht erkennt oder wenn Ihre Datums- und Uhrzeitwerte unterschiedliche Formate verwenden, verwenden Sie das 'auto' Argument mit dem TIMEFORMAT Parameter DATEFORMAT oder. Weitere Informationen finden Sie unter Verwenden der automatischen Erkennung mit DATEFORMAT und TIMEFORMAT.

Wenn Ihre Quelldaten als Epochenzeit dargestellt werden, d. h. die Anzahl der Sekunden oder Millisekunden seit dem 1. Januar 1970, 00:00:00 UhrUTC, geben Sie oder an. 'epochsecs' 'epochmillisecs'

Die Schlüsselwörter 'auto', 'epochsecs' und 'epochmillisecs' unterscheiden zwischen Groß- und Kleinschreibung.

Das Schlüsselwort AS ist optional.

TRIMBLANKS

Entfernt die abschließenden Leerzeichen aus einer Zeichenfolge. VARCHAR Dieser Parameter gilt nur für Spalten mit einem VARCHAR Datentyp.

TRUNCATECOLUMNS

Schneidet Daten in Spalten auf die entsprechende Zahl von Zeichen ab, sodass sie der Spaltenspezifikation entsprechen. Gilt nur für Spalten mit dem CHAR Datentyp A VARCHAR oder und Zeilen mit einer Größe von 4 MB oder weniger.