View a markdown version of this page

Daten in Aurora DSQL laden - Amazon Aurora DSQL

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 in Aurora DSQL laden

Ganz gleich, ob Sie aus einer vorhandenen Datenbank migrieren, Dateien aus Amazon Simple Storage Service importieren oder Daten aus Ihrem lokalen System laden, Aurora DSQL bietet mehrere Möglichkeiten, Ihre Daten zu importieren. In diesem Abschnitt werden die empfohlenen Tools und Techniken für Datenladungen aller Größen, von Gigabyte bis hin zu Hunderten von Terabyte, behandelt.

Wählen Sie einen Ladeansatz

Aurora DSQL unterstützt standardmäßige PostgreSQL-Befehle zum Laden von Daten, aber das effiziente Laden von Daten in großem Maßstab erfordert Parallelisierung, Verbindungsmanagement und Fehlerbehebung. In der folgenden Tabelle sind Ihre Optionen zusammengefasst:

Ansatz Am besten geeignet für Überlegungen
Aurora DSQL Loader - Open-Source-Hilfsprogramm, das das Parallelisieren von Einfügungen bei Verwendung von Aurora DSQL erleichtert Die meisten Szenarien zum Laden von Daten, insbesondere Migrationen und Massenimporte Verwaltet Parallelisierung, Verbindungspooling, Konfliktlösung und IAM-Authentifizierung automatisch. Als Quellcode oder Binärcode verfügbar.
PostgreSQL \copy - Clientseitiger Metabefehl psql Wird einfach geladen, wenn Sie bereits verbunden sind über psql Liest Dateien auf dem Client und streamt Daten über die Verbindung; Sie verwalten die Parallelisierung selbst
INSERTTransaktionen — Standard SQL DML Kleine Datensätze oder anwendungsorientierte Beilagen Einfachster Ansatz, aber am langsamsten für Massendaten

Verwenden Sie für die meisten Aufgaben zum Laden von Daten den Aurora DSQL Loader. Es bewältigt die betriebliche Komplexität beim Laden von Daten in eine verteilte Datenbank, einschließlich der parallel Ausführung über mehrere Verbindungen und der automatischen Wiederholung fehlgeschlagener Operationen.

Aurora SQL-Lader

Der Aurora DSQL Loader ist ein Open-Source-Befehlszeilenprogramm, das entwickelt wurde, um Daten effizient in Aurora DSQL-Cluster zu laden. Es verwaltet das Verbindungspooling, parallelisiert die Datenübertragung zwischen mehreren Workern und behandelt Konflikte und Wiederholungsversuche automatisch.

Schlüssel-Features

Der Aurora DSQL Loader bietet die folgenden Funktionen:

Paralleles Laden

Konfigurierbare Worker-Threads ermöglichen das gleichzeitige Laden von Daten über mehrere Verbindungen und verbessern so die Leistung.

Verbindungspooling

Verwaltet einen Pool von Verbindungen zu Ihrem Aurora DSQL-Cluster und wickelt die IAM-Authentifizierung und den Verbindungslebenszyklus automatisch ab.

Unterstützung mehrerer Dateiformate

Unterstützt CSV (kommagetrennte Werte), TSV (tabulatorgetrennte Werte) und das Apache Parquet-Spaltenformat. Der Loader erkennt das Dateiformat automatisch anhand der Quell-URI-Erweiterung.

Automatische Schemainferenz

Bei Verwendung mit dem --if-not-exists Flag kann der Loader auf der Grundlage der Daten automatisch Tabellen mit entsprechenden Spaltentypen erstellen.

Umgang mit Konflikten

Wenn Ihre Zieltabelle eindeutige Einschränkungen hat, konfigurieren Sie, wie der Loader Konflikte behandelt, indem Sie die folgende --on-conflict Option verwenden: Duplikate überspringen, Datensätze verschieben oder einen Fehler zurückgeben.

Fehlertoleranz

Automatische Wiederholungsversuche und Funktionen zur Wiederaufnahme von Aufträgen stellen sicher, dass unterbrochene Ladevorgänge von ihrem Endpunkt aus fortgesetzt werden können, anstatt sie vollständig neu zu starten.

Lokale Quellen und S3-Quellen

Laden Sie mit S3 Daten aus lokalen Dateisystempfaden oder direkt aus Amazon S3-Buckets. URIs

Voraussetzungen

Bevor Sie den Aurora DSQL Loader verwenden, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein aktiver Aurora DSQL-Cluster mit einem gültigen Endpunkt.

  • AWS Anmeldeinformationen, die über die Rollen AWS CLI (aws configure), AWS Single Sign-On (aws sso login) oder IAM konfiguriert wurden.

  • IAM-Berechtigungen: dsql:DbConnectAdmin oder dsql:DbConnect auf Ihrem Aurora DSQL-Cluster.

  • Für S3-Quellen entsprechende Berechtigungen zum Lesen aus dem Quell-Bucket.

Installation

Laden Sie die neueste Version von der GitHub Releases-Seite herunter. Vorgefertigte Binärdateien sind für gängige Plattformen verfügbar. Anweisungen zum Erstellen aus dem Quellcode finden Sie im Aurora DSQL Loader-Repository.

Verwendungsbeispiele

Die folgenden Beispiele zeigen allgemeine Anwendungsfälle für den Aurora DSQL Loader.

Beispiel Eine lokale CSV-Datei wird geladen

In diesem Beispiel wird eine CSV-Datei aus Ihrem lokalen Dateisystem in eine bestehende Tabelle geladen:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table
Beispiel Daten aus Amazon S3 laden

In diesem Beispiel wird eine Parquet-Datei aus einem Amazon S3 S3-Bucket geladen:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri s3://my-bucket/data.parquet \ --table my_table
Beispiel Automatische Tabellenerstellung

In diesem Beispiel wird automatisch eine neue Tabelle auf der Grundlage des Datenschemas erstellt:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table \ --if-not-exists
Beispiel Vor dem Laden validieren

In diesem Beispiel wird Ihre Konfiguration validiert, ohne tatsächlich Daten zu laden:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table \ --dry-run
Beispiel Wiederaufnahme eines unterbrochenen Ladevorgangs

Wenn ein Ladevorgang unterbrochen wird, können Sie ihn mit der Job-ID aus dem vorherigen Lauf fortsetzen:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table \ --resume-job-id job-id \ --manifest-dir ./loader-state
Anmerkung

Bei der Wiederaufnahme überspringt der Loader die meisten bereits abgeschlossenen Arbeiten, versucht es jedoch möglicherweise erneut mit einigen Datensätzen. Wenn Ihre Zieltabelle eindeutige Einschränkungen hat, verwenden Sie die --on-conflict Option, um Duplikate zu behandeln, z. B. um sie zu überspringen oder zu aktualisieren. DO NOTHING DO UPDATE

Befehlszeilenoptionen

Der Aurora DSQL Loader unterstützt die folgenden Befehlszeilenoptionen:

--endpoint

(Erforderlich) Der Aurora DSQL-Cluster-Endpunkt. Beispiel: cluster-id.dsql.region.on.aws

--source-uri

(Erforderlich) Der Pfad zur Datendatei. Kann ein lokaler Dateipfad oder ein S3-URI sein (z. B.s3://bucket-name/file.parquet).

--table

(Erforderlich) Der Name der Zieltabelle in Ihrer Aurora DSQL-Datenbank.

--if-not-exists

(Optional) Erstellen Sie automatisch die Zieltabelle, falls sie nicht existiert. Der Loader leitet das Schema aus den Daten ab.

--dry-run

(Optional) Überprüfen Sie die Konfiguration und die Daten, ohne sie tatsächlich in die Datenbank zu laden.

--resume-job-id

(Optional) Setzt einen zuvor unterbrochenen Ladevorgang mit der angegebenen Job-ID fort.

--manifest-dir

(Optional) Verzeichnis zum Speichern des Jobstatus und der Manifeste, das für die Wiederaufnahme des Jobs verwendet wird.

--on-conflict

(Optional) Gibt an, wie Konflikte beim Einfügen von Zeilen behandelt werden sollen, die gegen eindeutige Einschränkungen in der Zieltabelle verstoßen. Gültige Werte sind error (einen Fehler zurückgeben), do-nothing (doppelte Zeilen überspringen) oder do-update (vorhandene Zeilen mit neuen Werten aktualisieren).

Führen Sie folgenden Befehl aus, um eine vollständige Liste der Optionen und zusätzlichen Konfigurationsparameter zu erhalten:

aurora-dsql-loader load --help

Best Practices

  • Verwenden Sie den Testlauf zur Validierung — Testen Sie Ihre Ladekonfiguration immer mit, --dry-run bevor Sie Daten in Produktionstabellen laden.

  • Definieren Sie eindeutige Einschränkungen für die Wiederaufnahme — Wenn Sie unterbrochene Ladevorgänge wieder aufnehmen müssen, definieren Sie eindeutige Einschränkungen für Ihre Zieltabellen und verwenden Sie die --on-conflict Option, bereits geladene Datensätze zu verarbeiten.

  • Verwenden Sie Parquet für große Datensätze — Das spaltenförmige Format von Parquet bietet im Vergleich zu CSV oder TSV in der Regel eine bessere Komprimierung und ein schnelleres Laden großer Datensätze.

  • Manifestverzeichnisse beibehalten — Behalten Sie das Manifestverzeichnis für Ladeaufträge bei, bis Sie bestätigen, dass der Ladevorgang erfolgreich abgeschlossen wurde, und ermöglichen Sie bei Bedarf die Wiederaufnahme.

  • Tabellen nach Möglichkeit vorab erstellen — Definieren Sie die Zieltabelle mit expliziten Spaltendatentypen und Primärschlüsseln, bevor Sie Daten laden. Vorab erstellte Schemas geben Ihnen die Kontrolle über die Typgenauigkeit und Indizierung, was in der Regel zu einer besseren Abfrageleistung im Vergleich zu automatisch abgeleiteten Schemas führt.

Fehlerbehebung

Authentifizierungsfehler

Vergewissern Sie sich, dass Ihre AWS Anmeldeinformationen korrekt konfiguriert sind und dass Ihre IAM-Identität über die erforderlichen dsql:DbConnect OR-Berechtigungen für den Zielcluster verfügt. dsql:DbConnectAdmin

S3-Zugriffsfehler

Stellen Sie sicher, dass Ihre IAM-Identität über die entsprechenden S3-Leseberechtigungen für den Quell-Bucket und die Objekte verfügt.

Fehler bei der Schemainferenz

Stellen Sie bei der Verwendung sicher--if-not-exists, dass Ihre Datendatei konsistente Spaltentypen hat. Gemischte Typen in einer Spalte können dazu führen, dass die Schemainferenz fehlschlägt.

Doppelte Schlüsselfehler bei der Wiederaufnahme

Wenn Sie beim Wiederaufnehmen eines Ladevorgangs auf Fehler mit doppelten Schlüsseln stoßen, fügen Sie Ihrer Zieltabelle eindeutige Einschränkungen hinzu, damit der Loader bereits geladene ON CONFLICT DO NOTHING Datensätze überspringen kann.

Weitere Informationen zur Fehlerbehebung finden Sie im Aurora DSQL GitHub Loader-Repository.

Migrationspfade

In den folgenden Abschnitten wird beschrieben, wie Daten aus gängigen Quellsystemen nach Aurora DSQL migriert werden.

Migration von PostgreSQL

Um Daten aus einer vorhandenen PostgreSQL-Datenbank zu Aurora DSQL zu migrieren:

  1. Exportieren Sie Ihre Daten aus PostgreSQL in das CSV- oder Parquet-Format. Sie können den COPY PostgreSQL-Befehl verwenden, um jede Tabelle zu exportieren:

    COPY my_table TO '/path/to/my_table.csv' WITH (FORMAT csv, HEADER true);
  2. Erstellen Sie die Zieltabelle in Aurora DSQL. Sie können das Schema entweder manuell erstellen oder das --if-not-exists Loader-Flag verwenden, um das Schema aus Ihren Daten abzuleiten.

  3. Laden Sie die exportierten Daten mit dem Aurora DSQL Loader:

    aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri /path/to/my_table.csv \ --table my_table
Tipp

Bei großen Migrationen sollten Sie den Export in das Parquet-Format in Betracht ziehen, um eine bessere Komprimierung und ein schnelleres Laden zu erzielen. Tools wie DuckDB können CSV-Dateien effizient in Parquet konvertieren.

Migration von MySQL

Um Daten von MySQL zu Aurora DSQL zu migrieren:

  1. Exportieren Sie Ihre Daten aus MySQL in das CSV-Format mit SELECT INTO OUTFILE oder einem ähnlichen Tool mysqldump mit der --tab Option:

    SELECT * FROM my_table INTO OUTFILE '/path/to/my_table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
  2. Erstellen Sie die Zieltabelle in Aurora DSQL mit entsprechenden PostgreSQL-kompatiblen Datentypen.

  3. Laden Sie die exportierten Daten mit dem Aurora DSQL Loader:

    aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri /path/to/my_table.csv \ --table my_table
Anmerkung

MySQL und PostgreSQL haben unterschiedliche Datentypsysteme. Überprüfen Sie Ihr Schema und passen Sie die Datentypen nach Bedarf an, wenn Sie Tabellen in Aurora DSQL erstellen.

Aus Amazon S3 laden

Wenn sich Ihre Daten bereits in Amazon S3 befinden, können Sie sie direkt laden, ohne sie auf Ihr lokales System herunterzuladen. Der Aurora DSQL Loader unterstützt S3 URIs nativ:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri s3://my-bucket/path/to/data.parquet \ --table my_table

Stellen Sie sicher, dass Ihre IAM-Identität über s3:GetObject Berechtigungen für die Quellobjekte verfügt.

PostgreSQL\ copy verwenden

Wenn Sie bereits über eine psql Sitzung, die die IAM-Authentifizierung abwickelt, mit Aurora DSQL verbunden sind, können Sie den clientseitigen \copy Metabefehl verwenden, um Daten aus Ihrem lokalen Dateisystem zu laden. \copyLiest im Gegensatz zur serverseitigen COPY Anweisung die Datei auf dem Client-Computer und streamt die Daten über die bestehende Verbindung, sodass kein serverseitiger Dateizugriff erforderlich ist. Dieser Ansatz eignet sich gut für einfache Ladevorgänge mit nur einem Thread.

Beispiel Laden einer CSV-Datei mit\ copy
\copy my_table FROM '/path/to/data.csv' WITH (FORMAT csv, HEADER true);

Bei \copy direkter Nutzung sind Sie verantwortlich für:

  • Verwaltung der Parallelisierung beim Laden mehrerer Dateien oder großer Datensätze

  • Verwaltung der Verbindungsverwaltung und Aktualisierung des Authentifizierungstokens

  • Implementierung der Wiederholungslogik für fehlgeschlagene Operationen

Bewährte Methoden für INSERT-Transaktionen

Wenn Sie INSERT Anweisungen verwenden, um Daten in Aurora DSQL zu laden, gehen Sie wie folgt vor, um den Durchsatz und die Zuverlässigkeit zu verbessern:

  • Batch zu mehreren Zeilen zusammenfassen INSERTs — Gruppieren Sie mehrere Zeilen zu einer einzigen INSERT Anweisung, um Roundtrips zu reduzieren. INSERT INTO my_table VALUES (1, 'a'), (2, 'b'), (3, 'c')Ist beispielsweise effizienter als drei separate Anweisungen.

  • Verwenden Sie parametrisierte Abfragen — Verwenden Sie vorbereitete Anweisungen mit Parameterbindung anstelle einer Zeichenkettenverkettung. Dadurch werden SQL-Injection-Risiken vermieden und die Datenbank kann Abfragepläne wiederverwenden.

  • Halten Sie die Transaktionen klein — Aurora DSQL verwendet eine optimistische Parallelitätssteuerung, sodass bei großen Transaktionen, die viele Zeilen berühren, die Wahrscheinlichkeit von Konflikten steigt. Streben Sie Transaktionen mit einigen hundert Zeilen an, anstatt mit Tausenden.

  • Implementieren Sie Wiederholungslogik — In einem verteilten System sind vorübergehende Fehler wie Konflikte mit optimistischer Parallelitätskontrolle (OCC) zu erwarten. Implementieren Sie einen exponentiellen Backoff mit Wiederholungsversuchen für fehlgeschlagene Transaktionen.

  • Verbindungsübergreifende Parallelisierung — Öffnen Sie mehrere Verbindungen und verteilen Sie Inserts auf diese. Jede Verbindung kann eine andere Teilmenge von Daten gleichzeitig verarbeiten.

Für die meisten Anwendungsfälle bietet der Aurora DSQL Loader einen einfacheren und robusteren Ansatz für das Laden von Daten.

Weitere Ressourcen