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.
Daten aus Textdateien in einem Amazon S3-Bucket in einen Amazon Aurora My SQL DB-Cluster laden
Sie können den Ausdruck LOAD DATA FROM S3
oder LOAD XML FROM S3
verwenden, um Daten aus Dateien zu laden, die in einem Amazon S3-Bucket gespeichert sind. In Aurora My SQL werden die Dateien zuerst auf der lokalen Festplatte gespeichert und dann in die Datenbank importiert. Nachdem die Importe in die Datenbank abgeschlossen sind, werden die lokalen Dateien gelöscht.
Anmerkung
Für Aurora Serverless v1 wird das Laden von Daten aus Textdateien in eine Tabelle nicht unterstützt. Für Aurora Serverless v2 wird sie unterstützt.
Inhalt
Gewähren von Zugriff auf Amazon S3 für Aurora
Bevor Sie Daten aus einem Amazon S3-Bucket laden können, müssen Sie Ihrem Aurora My SQL DB-Cluster zunächst die Erlaubnis erteilen, auf Amazon S3 zuzugreifen.
Um Aurora My SQL Zugriff auf Amazon S3 zu gewähren
-
Erstellen Sie eine AWS Identity and Access Management (IAM) -Richtlinie, die die Bucket- und Objektberechtigungen bereitstellt, die Ihrem Aurora My SQL DB-Cluster den Zugriff auf Amazon S3 ermöglichen. Detaillierte Anweisungen finden Sie unter Eine IAM Richtlinie für den Zugriff auf Amazon S3 S3-Ressourcen erstellen.
Anmerkung
In Aurora My SQL Version 3.05 und höher können Sie Objekte laden, die vom Kunden verwaltet wurden. AWS KMS keys Nehmen Sie dazu die
kms:Decrypt
Erlaubnis in Ihre IAM Richtlinie auf. Weitere Informationen finden Sie unter Erstellen einer IAM-Zugriffsrichtlinie für AWS KMS-Ressourcen.Sie benötigen diese Berechtigung nicht, um Objekte zu laden, die mit Von AWS verwaltete Schlüssel oder von Amazon S3 verwalteten Schlüsseln (SSE-S3) verschlüsselt wurden.
-
Erstellen Sie eine IAM Rolle und fügen Sie die IAM Richtlinie, die Sie erstellt habenEine IAM Richtlinie für den Zugriff auf Amazon S3 S3-Ressourcen erstellen, der neuen IAM Rolle hinzu. Detaillierte Anweisungen finden Sie unter Erstellen einer IAM-Rolle, um Amazon Aurora den Zugriff auf AWS-Services zu erlauben.
-
Stellen Sie sicher, dass der DB-Cluster eine benutzerdefinierte DB-Cluster-Parametergruppe verwendet.
Weitere Informationen über das Erstellen einer benutzerdefinierten DB-Cluster-Parametergruppe finden Sie unter Eine DB-Cluster-Parametergruppe in Amazon Aurora erstellen.
-
Setzen Sie für Aurora My SQL Version 2 entweder den
aws_default_s3_role
DB-Cluster-Parameteraurora_load_from_s3_role
oder auf den Amazon-Ressourcennamen (ARN) der neuen IAM Rolle. Wenn keine IAM Rolle für angegeben istaurora_load_from_s3_role
, verwendet Aurora die IAM unter angegebene Rolleaws_default_s3_role
.Verwenden
aws_default_s3_role
Sie für Aurora My SQL Version 3Wenn das Cluster Teil einer globalen Aurora-Datenbank ist, legen Sie diesen Parameter für jedes Aurora-Cluster in der globalen Datenbank fest. Auch wenn nur das primäre Cluster in einer globalen Aurora-Datenbank Daten laden kann, kann ein anderes Cluster durch den Failover-Mechanismus zum primären Cluster hochgestuft werden.
Weitere Informationen zu DB-Cluster-Parametern finden Sie unter Amazon Aurora-DB-Cluster und DB-Instance-Parameter.
-
Um Datenbankbenutzern in einem Aurora My SQL DB-Cluster den Zugriff auf Amazon S3 zu ermöglichen, ordnen Sie die Rolle, die Sie erstellt haben, Erstellen einer IAM-Rolle, um Amazon Aurora den Zugriff auf AWS-Services zu erlauben dem DB-Cluster zu. Bei einer globalen Aurora-Datenbank verknüpfen Sie die Rolle mit jedem Aurora-Cluster in der globalen Datenbank. Informationen zur Zuordnung einer IAM Rolle zu einem DB-Cluster finden Sie unterZuweisen einer IAM-Rolle zu einem Amazon-Aurora-MySQL-DB-Cluster.
-
Konfigurieren Sie Ihren Aurora My SQL DB-Cluster so, dass ausgehende Verbindungen zu Amazon S3 zugelassen werden. Detaillierte Anweisungen finden Sie unter Aktivierung der Netzwerkkommunikation von Amazon Aurora zu anderen AWS Diensten.
Wenn Ihr DB-Cluster nicht öffentlich zugänglich ist und sich in einem VPC öffentlichen Subnetz befindet, ist er privat. Sie können einen S3-Gateway-Endpunkt für den Zugriff auf Ihren S3-Bucket erstellen. Weitere Informationen finden Sie unter Gateway-Endpunkte für Amazon S3.
Bei einer globalen Aurora-Datenbank aktivieren Sie ausgehende Verbindungen für jeden Aurora-Cluster in der globalen Datenbank.
Erteilen von Rechten zum Laden von Daten in Amazon Aurora My SQL
Der Datenbankbenutzer, der die LOAD DATA FROM S3
- oder LOAD XML FROM S3
-Anweisung ausgibt, muss über eine bestimmte Rolle oder Berechtigung verfügen, um eine der Anweisungen auszugeben. In Aurora My SQL Version 3 gewähren Sie die AWS_LOAD_S3_ACCESS
Rolle. In Aurora My SQL Version 2 gewähren Sie das LOAD FROM S3
Privileg. Dem Administratorbenutzer für ein DB-Cluster wird die entsprechende Rolle oder -Berechtigung standardmäßig gewährt. Sie können die Berechtigung einem anderen Benutzer erteilen, indem Sie eine der folgenden Anweisungen verwenden.
Verwenden Sie die folgende Anweisung für Aurora My SQL Version 3:
GRANT AWS_LOAD_S3_ACCESS TO '
user
'@'domain-or-ip-address
'
Tipp
Wenn Sie die Rollentechnik in Aurora My SQL Version 3 verwenden, können Sie die Rolle auch mithilfe der SET ROLE
ALL
Anweisung SET ROLE
or aktivieren. Wenn Sie mit dem My SQL 8.0-Rollensystem nicht vertraut sind, finden Sie weitere Informationen unterRollenbasiertes Berechtigungsmodell. Weitere Informationen finden Sie unter Rollen verwendenrole_name
Dies gilt nur für die aktuelle aktive Sitzung. Wenn Sie die Verbindung wieder herstellen, müssen Sie die SET ROLE
Anweisung erneut ausführen, um Rechte zu gewähren. Weitere Informationen finden Sie in der SETROLEErklärung
Sie können den DB-Cluster-Parameter activate_all_roles_on_login
zum automatischen Aktivieren aller Rollen verwenden, wenn ein Benutzer eine Verbindung mit einer DB-Instance herstellt. Wenn dieser Parameter gesetzt ist, müssen Sie die SET ROLE
Anweisung im Allgemeinen nicht explizit aufrufen, um eine Rolle zu aktivieren. Weitere Informationen finden Sie unter activate_all_roles_on_login im My Reference
Sie müssen jedoch zu Beginn einer gespeicherten Prozedur SET ROLE ALL
explizit aufrufen, um die Rolle zu aktivieren, wenn die gespeicherte Prozedur von einem anderen Benutzer aufgerufen wird.
Verwenden Sie die folgende Anweisung für Aurora My SQL Version 2:
GRANT LOAD FROM S3 ON *.* TO '
user
'@'domain-or-ip-address
'
Die AWS_LOAD_S3_ACCESS
Rolle und die LOAD FROM S3
Berechtigung sind spezifisch für Amazon Aurora und nicht für externe My SQL Databases oder RDS für My SQL DB-Instances verfügbar. Wenn Sie die Replikation zwischen einem Aurora-DB-Cluster als Replikationsquelle und My SQL database als Replikationsclient eingerichtet haben, führt die GRANT
Anweisung für die Rolle oder das Privileg dazu, dass die Replikation mit einem Fehler beendet wird. Sie können diese Fehlermeldung ignorieren und mit der Replikation fortfahren. Verwenden Sie die Prozedur mysql_rds_skip_repl_error, um den Fehler bei einer RDS for My SQL Instance zu überspringen. Um den Fehler in einer externen My SQL database zu überspringen, verwenden Sie die Systemvariable slave_skip_errors
Anmerkung
Der Datenbankbenutzer muss über INSERT
Rechte für die Datenbank verfügen, in die er Daten lädt.
Den Pfad (URI) zu einem Amazon S3 S3-Bucket angeben
Die Syntax für die Angabe des Pfads (URI) zu Dateien, die in einem Amazon S3 S3-Bucket gespeichert sind, lautet wie folgt.
s3
-region
://amzn-s3-demo-bucket
/file-name-or-prefix
Der Pfad enthält die folgenden Werte:
-
region
(optional) — Die AWS Region, die den Amazon S3 S3-Bucket enthält, aus dem geladen werden soll. Dieser Wert ist optional. Falls Sie keinen Wert fürregion
angeben, lädt Aurora die Datei aus Amazon S3 in derselben Region wie Ihr DB-Cluster. -
bucket-name
– Der Name des Amazon S3-Buckets mit den zu ladenden Daten. Objekt-Präfixe, die einen virtuellen Ordnerpfad identifizieren, werden unterstützt. -
file-name-or-prefix
— Der Name der Amazon S3 S3-Textdatei oder XML -Datei oder ein Präfix, das einen oder mehrere zu ladende Texte oder XML Dateien identifiziert. Sie können auch eine Manifestdatei festlegen, die eine oder mehrere Textdateien zum Laden angibt. Weitere Informationen darüber, wie Sie mit einer Manifestdatei Textdateien aus Amazon S3 laden, finden Sie unter Verwenden eines Manifests für zu ladende Dateien.
Um die URI vier Dateien in einen S3-Bucket zu kopieren
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie im Navigationsbereich Buckets und dann den Bucket aus, dessen Bereich URI Sie kopieren möchten.
-
Wählen Sie das Präfix oder die Datei aus, die Sie aus S3 laden möchten.
-
Wählen Sie „S3 URI kopieren“.
LOADDATAFROMS3
Sie können die LOAD DATA FROM S3
Anweisung verwenden, um Daten aus jedem Textdateiformat zu laden, das von der SQL LOADDATAINFILE
Anmerkung
Stellen Sie sicher, dass Ihr Aurora My SQL DB-Cluster ausgehende Verbindungen zu S3 zulässt. Weitere Informationen finden Sie unter Aktivierung der Netzwerkkommunikation von Amazon Aurora zu anderen AWS Diensten.
Syntax
LOAD DATA [FROM] S3 [FILE | PREFIX | MANIFEST] '
S3-URI
' [REPLACE | IGNORE] INTO TABLEtbl_name
[PARTITION (partition_name
,...)] [CHARACTER SETcharset_name
] [{FIELDS | COLUMNS} [TERMINATED BY 'string
'] [[OPTIONALLY] ENCLOSED BY 'char
'] [ESCAPED BY 'char
'] ] [LINES [STARTING BY 'string
'] [TERMINATED BY 'string
'] ] [IGNOREnumber
{LINES | ROWS}] [(col_name_or_user_var
,...)] [SETcol_name
=expr
,...]
Anmerkung
In Aurora My SQL Version 3.05 und höher FROM
ist das Schlüsselwort optional.
Parameter
Die Anweisung LOAD DATA FROM S3
verwendet die folgenden erforderlichen und optionalen Parameter. Weitere Informationen zu einigen dieser Parameter finden Sie unter LOADDATAStatement
- FILE | PREFIX | MANIFEST
-
Gibt an, ob die Daten aus einer einzelnen Datei, aus allen Dateien mit einem bestimmten Präfix oder aus allen Dateien in einem angegebenen Manifest geladen werden sollen.
FILE
ist der Standardwert. - S-3 URI
-
Gibt an, URI ob eine Text- oder Manifestdatei geladen werden soll, oder ein Amazon S3 S3-Präfix, das verwendet werden soll. Geben Sie das an, URI indem Sie die unter beschriebene Syntax verwendenDen Pfad (URI) zu einem Amazon S3 S3-Bucket angeben.
- REPLACE | IGNORE
-
Gibt an, welche Aktion ausgeführt werden soll, falls eine Eingabezeile die gleichen eindeutigen Schlüsselwerte aufweist wie eine vorhandene Zeile in der Datenbanktabelle.
-
Geben Sie
REPLACE
an, wenn die Eingabezeile die bestehende Zeile überschreiben soll. -
Geben Sie
IGNORE
an, wenn die Eingabezeile verworfen werden soll.
-
- INTO TABLE
-
Gibt den Namen der Datenbanktabelle an, in welche die Eingabezeilen geladen werden sollen.
- PARTITION
-
Gibt vor, dass alle Eingabezeilen in die Partitionen, die in der Liste mit durch Komma getrennten Partitionsnamen angegeben sind, eingefügt werden müssen. Lässt sich eine Eingabezeile nicht in eine der angegebenen Partitionen einfügen, schlägt die Anweisung fehl und eine Fehlermeldung wird zurückgegeben.
- CHARACTER SET
-
Gibt den Zeichensatz der Daten in der Eingabedatei an.
- FIELDS | COLUMNS
-
Gibt an, wie die Felder oder Spalten in der Eingabedatei getrennt werden. Für Felder wird standardmäßig ein Tabulator als Trennzeichen verwendet.
- LINES
-
Gibt an, wie die Zeilen in der Eingabedatei getrennt werden. Zeilen werden standardmäßig durch ein Zeilenumbruchzeichen (
'\n'
) getrennt. - IGNORE
number
LINES | ROWS -
Gibt an, dass eine bestimmte Anzahl an Zeilen am Anfang der Eingabedatei ignoriert werden sollen. Sie können beispielsweise mit
IGNORE 1 LINES
die erste Headerzeile mit den Spaltennamen überspringen oder mitIGNORE 2 ROWS
die ersten beiden Datenzeilen der Eingabedatei auslassen. Wenn Sie auchPREFIX
verwenden, überspringtIGNORE
eine bestimmte Anzahl von Zeilen am Anfang der ersten Eingabedatei. - col_name_or_user_var, ...
-
Gibt eine durch Komma getrennte Liste mit einem oder mehreren Spaltennamen bzw. einer oder mehreren Benutzervariablen an, die die Namen der zu ladenden Elemente identifizieren. Der Name einer Benutzervariable, der für diesen Zweck verwendet wird, muss mit dem Namen eines Elements aus der Textdatei übereinstimmen, welcher ein @ als Präfix hat. Sie können Benutzervariablen einsetzen, um die entsprechenden Feldwerte für die spätere Wiederverwendung zu speichern.
Beispielsweise wird mit folgender Anweisung die erste Spalte aus der Eingabedatei in die erste Spalte von
table1
geladen, zudem wird der Wert der Spaltetable_column2
intable1
auf den Eingabewert der zweiten Spalte geteilt durch 100 gesetzt.LOAD DATA FROM S3 's3://
amzn-s3-demo-bucket
/data.txt' INTO TABLE table1 (column1, @var1) SET table_column2 = @var1/100; - SET
-
Gibt eine durch Komma getrennte Liste mit Zuweisungsvorgängen an, die die Werte von Spalten in der Tabelle auf Werte setzen, die nicht in der Eingabedatei enthalten sind.
Beispielsweise setzt die folgende Anweisung die ersten beiden Spalten von
table1
auf die Werte in den ersten beiden Spalten aus der Eingabedatei und anschließend den Wert voncolumn3
intable1
auf den aktuellen Zeitstempel.LOAD DATA FROM S3 's3://
amzn-s3-demo-bucket
/data.txt' INTO TABLE table1 (column1, column2) SET column3 = CURRENT_TIMESTAMP;Auf der rechten Seite von
SET
-Zuweisungen können Sie Unterabfragen formulieren. Für eine Unterabfrage, die einen Wert zurückgibt, der einer Spalte zugewiesen werden soll, kommt ausschließlich eine skalare Unterabfrage infrage. Des Weiteren können Sie mit einer Unterabfrage keine Daten aus der zu ladenden Tabelle auswählen.
Sie können nicht das Schlüsselwort LOCAL
der Anweisung LOAD DATA FROM S3
verwenden, wenn Sie Daten aus einem Amazon-S3-Bucket laden.
Verwenden eines Manifests für zu ladende Dateien
Sie können die LOAD DATA FROM S3
Anweisung mit dem MANIFEST
Schlüsselwort verwenden, um eine Manifestdatei in einem JSON Format anzugeben, das die Textdateien auflistet, die in eine Tabelle in Ihrem DB-Cluster geladen werden sollen.
Das folgende JSON Schema beschreibt das Format und den Inhalt einer Manifestdatei.
{ "$schema": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": {}, "id": "Aurora_LoadFromS3_Manifest", "properties": { "entries": { "additionalItems": false, "id": "/properties/entries", "items": { "additionalProperties": false, "id": "/properties/entries/items", "properties": { "mandatory": { "default": "false", "id": "/properties/entries/items/properties/mandatory", "type": "boolean" }, "url": { "id": "/properties/entries/items/properties/url", "maxLength": 1024, "minLength": 1, "type": "string" } }, "required": [ "url" ], "type": "object" }, "type": "array", "uniqueItems": true } }, "required": [ "entries" ], "type": "object" }
url
In jedem Manifest muss ein Name URL mit dem Bucket-Namen und dem vollständigen Objektpfad für die Datei angegeben werden, nicht nur ein Präfix. Sie können ein Manifest verwenden, um Dateien aus verschiedenen Buckets, verschiedenen Regionen oder mit unterschiedlichen Präfixen zu laden. Wenn in der keine Region angegeben istURL, wird die Region des Aurora-DB-Ziel-Clusters verwendet. Das folgende Beispiel zeigt eine Manifestdatei, mit der vier Dateien aus unterschiedlichen Buckets geladen werden.
{ "entries": [ { "url":"s3://aurora-bucket/2013-10-04-customerdata", "mandatory":true }, { "url":"s3-us-west-2://aurora-bucket-usw2/2013-10-05-customerdata", "mandatory":true }, { "url":"s3://aurora-bucket/2013-10-04-customerdata", "mandatory":false }, { "url":"s3://aurora-bucket/2013-10-05-customerdata" } ] }
Das optionale Flag mandatory
gibt an, ob LOAD DATA FROM S3
eine Fehlermeldung zurückgeben soll, wenn die Datei nicht gefunden wird. Das Flag mandatory
ist standardmäßig auf false
gesetzt. Wenn keine Dateien gefunden werden, wird mandatory
beendet, und zwar unabhängig vom LOAD DATA FROM S3
-Wert.
Manifestdateien können eine beliebige Erweiterung haben. Im folgenden Beispiel wird die Anweisung LOAD DATA FROM S3
mit dem Manifest aus dem vorherigen Beispiel ausgeführt, das den Namen customer.manifest
trägt.
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://aurora-bucket/customer.manifest' INTO TABLE CUSTOMER FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, FIRSTNAME, LASTNAME, EMAIL);
Nachdem die Anweisung beendet ist, wird ein Eintrag für jede erfolgreich geladene Datei in die Tabelle aurora_s3_load_history
geschrieben.
Überprüfen der geladenen Dateien mit der Tabelle „aurora_s3_load_history“
Mit jeder erfolgreich ausgeführten Anweisung LOAD DATA FROM S3
wird die Tabelle aurora_s3_load_history
im Schema mysql
mit einem Eintrag für jede geladene Datei aktualisiert.
Nach der Ausführung der Anweisung LOAD DATA FROM S3
können Sie überprüfen, welche Dateien geladen wurden. Dazu führen Sie eine Abfrage für die Tabelle aurora_s3_load_history
aus. Um die Dateien zu sehen, die aus einer Iteration der Anweisung geladen wurden, verwenden Sie die WHERE
Klausel, um die Datensätze auf dem Amazon S3 URI nach der in der Anweisung verwendeten Manifestdatei zu filtern. Wenn Sie zuvor dieselbe Manifestdatei verwendet haben, filtern Sie die Ereignisse mithilfe des Felds timestamp
.
select * from mysql.aurora_s3_load_history where load_prefix = '
S3_URI
';
In der folgenden Tabelle werden die Felder der Tabelle aurora_s3_load_history
beschrieben.
Feld | Beschreibung |
---|---|
|
DieURI, die in der Load-Anweisung angegeben wurde. Dies URI kann einem der folgenden Werte zugeordnet werden:
|
|
Der Name einer Datei, die mithilfe der im |
|
Die Versionsnummer der im Feld |
|
Die Größe der geladenen Datei in Bytes. |
|
Der Zeitstempel, zu dem die Anweisung |
Beispiele
Mit folgender Anweisung werden Daten aus einem Amazon S3-Bucket geladen, der sich in derselben Region befindet wie der Aurora-DB-Cluster. Die Anweisung liest die kommagetrennten Daten in der Dateicustomerdata.txt
, die sich in amzn-s3-demo-bucket
Amazon S3 S3-Bucket und lädt dann die Daten in die Tabellestore-schema.customer-table
.
LOAD DATA FROM S3 's3://
amzn-s3-demo-bucket
/customerdata.csv' INTO TABLE store-schema.customer-table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, FIRSTNAME, LASTNAME, ADDRESS, EMAIL, PHONE);
Mit folgender Anweisung werden Daten aus einem Amazon S3-Bucket geladen, der sich in einer anderen Region befindet als der Aurora-DB-Cluster. Die Anweisung liest die kommagetrennten Daten aus allen Dateien, die dem Objektpräfix in der employee-data
amzn-s3-demo-bucket
Amazon S3 S3-Bucket in der us-west-2
Region und lädt dann die Daten in die employees
Tabelle.
LOAD DATA FROM S3 PREFIX 's3-us-west-2://
amzn-s3-demo-bucket
/employee_data' INTO TABLE employees FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, FIRSTNAME, LASTNAME, EMAIL, SALARY);
Die folgende Anweisung lädt Daten aus den Dateien, die in einer JSON Manifestdatei mit dem Namen q1_sales.json angegeben sind, in die Tabelle. sales
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://
amzn-s3-demo-bucket1
/q1_sales.json' INTO TABLE sales FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (MONTH, STORE, GROSS, NET);
LOADXMLFROMS3
Sie können die LOAD XML FROM S3
Anweisung verwenden, um Daten aus XML Dateien, die in einem Amazon S3 S3-Bucket gespeichert sind, in einem von drei verschiedenen XML Formaten zu laden:
-
Spaltennamen als Attribute des Elements
<row>
. Der Attributwert bestimmt die Inhalte des Tabellenfeldes.<row column1="value1" column2="value2" .../>
-
Spaltennamen als untergeordnete Elemente des Elements
<row>
. Der Wert des untergeordneten Elements bestimmt die Inhalte des Tabellenfeldes.<row> <column1>value1</column1> <column2>value2</column2> </row>
-
Spaltennamen im Attribut
name
des Elements<field>
im Element<row>
. Der Wert des Elements<field>
bestimmt die Inhalte des Tabellenfeldes.<row> <field name='column1'>value1</field> <field name='column2'>value2</field> </row>
Syntax
LOAD XML FROM S3 '
S3-URI
' [REPLACE | IGNORE] INTO TABLEtbl_name
[PARTITION (partition_name,...)] [CHARACTER SET charset_name] [ROWS IDENTIFIED BY '<element-name>
'] [IGNOREnumber
{LINES | ROWS}] [(field_name_or_user_var,...)] [SET col_name = expr,...]
Parameter
Die Anweisung LOAD XML FROM S3
verwendet die folgenden erforderlichen und optionalen Parameter. Weitere Informationen zu einigen dieser Parameter finden Sie unter LOADXMLStatement
- FILE | PREFIX
-
Gibt an, ob die Daten aus einer einzelnen Datei oder aus allen Dateien mit einem bestimmten Präfix geladen werden sollen.
FILE
ist der Standardwert. - REPLACE | IGNORE
-
Gibt an, welche Aktion ausgeführt werden soll, falls eine Eingabezeile die gleichen eindeutigen Schlüsselwerte aufweist wie eine vorhandene Zeile in der Datenbanktabelle.
-
Geben Sie
REPLACE
an, wenn die Eingabezeile die bestehende Zeile überschreiben soll. -
Geben Sie
IGNORE
an, wenn Sie die Eingabezeile verwerfen möchten.IGNORE
ist der Standardwert.
-
- INTO TABLE
-
Gibt den Namen der Datenbanktabelle an, in welche die Eingabezeilen geladen werden sollen.
- PARTITION
-
Gibt vor, dass alle Eingabezeilen in die Partitionen, die in der Liste mit durch Komma getrennten Partitionsnamen angegeben sind, eingefügt werden müssen. Lässt sich eine Eingabezeile nicht in eine der angegebenen Partitionen einfügen, schlägt die Anweisung fehl und eine Fehlermeldung wird zurückgegeben.
- CHARACTER SET
-
Gibt den Zeichensatz der Daten in der Eingabedatei an.
- ROWSIDENTIFIEDVON
-
Gibt den Elementnamen an, der eine Zeile in der Eingabedatei bestimmt. Der Standardwert ist
<row>
. - IGNORE
number
LINES | ROWS -
Gibt an, dass eine bestimmte Anzahl an Zeilen am Anfang der Eingabedatei ignoriert werden sollen. Sie können es beispielsweise verwenden,
IGNORE 1 LINES
um die erste Zeile in der TextdateiIGNORE 2 ROWS
zu überspringen oder um die ersten beiden Datenzeilen in der Eingabe zu überspringenXML. - field_name_or_user_var, ...
-
Gibt eine durch Kommas getrennte Liste mit einem oder mehreren XML Elementnamen oder Benutzervariablen an, die anhand des Namens angeben, welche Elemente geladen werden sollen. Der Name einer Benutzervariablen, die für diesen Zweck verwendet wird, muss mit dem Namen eines Elements aus der XML Datei übereinstimmen, dem das Präfix @ vorangestellt ist. Sie können Benutzervariablen einsetzen, um die entsprechenden Feldwerte für die spätere Wiederverwendung zu speichern.
Beispielsweise wird mit folgender Anweisung die erste Spalte aus der Eingabedatei in die erste Spalte von
table1
geladen, zudem wird der Wert der Spaltetable_column2
intable1
auf den Eingabewert der zweiten Spalte geteilt durch 100 gesetzt.LOAD XML FROM S3 's3://
amzn-s3-demo-bucket
/data.xml' INTO TABLE table1 (column1, @var1) SET table_column2 = @var1/100; - SET
-
Gibt eine durch Komma getrennte Liste mit Zuweisungsvorgängen an, die die Werte von Spalten in der Tabelle auf Werte setzen, die nicht in der Eingabedatei enthalten sind.
Beispielsweise setzt die folgende Anweisung die ersten beiden Spalten von
table1
auf die Werte in den ersten beiden Spalten aus der Eingabedatei und anschließend den Wert voncolumn3
intable1
auf den aktuellen Zeitstempel.LOAD XML FROM S3 's3://
amzn-s3-demo-bucket
/data.xml' INTO TABLE table1 (column1, column2) SET column3 = CURRENT_TIMESTAMP;Auf der rechten Seite von
SET
-Zuweisungen können Sie Unterabfragen formulieren. Für eine Unterabfrage, die einen Wert zurückgibt, der einer Spalte zugewiesen werden soll, kommt ausschließlich eine skalare Unterabfrage infrage. Darüber hinaus können Sie mit einer Unterabfrage keine Daten aus der zu ladenden Tabelle auswählen.