Auf dieser Seite wird beschrieben, wie Sie Daten aus einer CSV-Datei, die in einem Cloud Storage-Bucket gespeichert ist, in einen AlloyDB for PostgreSQL-Cluster importieren.
Sie können den Import von Daten in AlloyDB-Cluster abbrechen. Weitere Informationen finden Sie unter Importvorgang abbrechen.
Hinweise
Für einen Importvorgang ist Folgendes zu beachten:
- Sorgen Sie dafür, dass in Ihrer Datenbank ausreichend freier Speicherplatz vorhanden ist.
- Importvorgänge verwenden Datenbankressourcen, stören den normalen Datenbankbetrieb jedoch nicht, wenn der Cluster nicht unterdimensioniert ist.
Erforderliche Rollen und Berechtigungen für den Import in AlloyDB-Cluster
Wenn Sie Daten aus Cloud Storage in AlloyDB importieren möchten, muss der Nutzer, der den Import initiiert, eine der folgenden Rollen haben:
- Die Rolle AlloyDB Admin
- Eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
alloydb.clusters.get
alloydb.clusters.import
Darüber hinaus muss das Dienstkonto für den AlloyDB-Cluster eine der folgenden Rollen haben:
storage.objectViewer
IAM-Rolle.- Eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
storage.objects.get
Informationen zu IAM-Rollen finden Sie unter Identity and Access Management.
Daten aus einer CSV-Datei in AlloyDB-Cluster importieren
- Die Datenbank und die Tabelle, in die importiert werden sollen, müssen in Ihrem AlloyDB-Cluster vorhanden sein. Informationen zum Erstellen einer Datenbank finden Sie unter Datenbank erstellen.
- Die CSV-Dateien müssen eine Zeile pro Datensatz und kommagetrennte Felder haben.
So importieren Sie Daten mit einer CSV-Datei in einen AlloyDB-Cluster:
gcloud
- Cloud Storage-Bucket erstellen
- Laden Sie die CSV-Datei in den Bucket hoch. Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.
Verwenden Sie gcloud storage buckets add-iam-policy-binding, um dem AlloyDB-Dienstkonto für den Bucket die
storage.objectViewer
IAM-Rolle zuzuweisen.service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
Importieren Sie die Datei:
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --gcs-uri=gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --user=USER --csv --table=TABLE_NAME
Ersetzen Sie die folgenden Werte:
- CLUSTER_NAME ist der Name des Clusters.
- REGION: die Region, in der der AlloyDB-Cluster bereitgestellt wird.
- BUCKET_NAME: der Name des Cloud Storage-Buckets.
- FILE_NAME: der Name der CSV-Datei.
- DATABASE_NAME: Der Name einer Datenbank im Cluster.
- USER: der Nutzer für den Importvorgang.
- TABLE_NAME: die Tabelle in der Datenbank.
Weitere Informationen zur Verwendung des Befehls
import
finden Sie auf der Referenzseite des Befehlsalloydb import
.Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie sie mit
gcloud storage buckets remove-iam-policy-binding
.
REST Version 1
- Cloud Storage-Bucket erstellen
- Laden Sie die CSV-Datei in den Bucket hoch. Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.
Weisen Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Importvorgang zu. Verwenden Sie das Dienstkontoformat, um das Dienstkonto für das Projekt anzugeben, in das Sie importieren. Das Format für das Dienstkonto hat folgendes Format:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Verwenden Sie gcloud storage buckets add-iam-policy-binding, um dem AlloyDB-Clusterdienstkonto für den Bucket die
storage.objectViewer
IAM-Rolle zuzuweisen. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.Importieren Sie die Datei.
Verwenden Sie die folgende HTTP-Methode und URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:import
Ersetzen Sie diese Werte in den folgenden Anweisungen:
- PROJECT_ID: Projekt-ID.
- LOCATION_ID: die Region, in der der AlloyDB-Cluster bereitgestellt wird.
- CLUSTER_ID: die Cluster-ID.
- BUCKET_NAME: der Name des Cloud Storage-Buckets.
- PATH_TO_CSV_FILE: der Pfad zur CSV-Datei.
- USER: der Nutzer für den Importvorgang.
- DATABASE_NAME: Der Name einer Datenbank im AlloyDB-Cluster.
- TABLE_NAME: die Tabelle in der Datenbank.
- COLUMNS (optional): die zu importierenden Spalten.
- ESCAPE_CHARACTER (optional): das Zeichen, das vor einem Datenzeichen stehen muss, das maskiert werden soll. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein. Beispiel:
22
steht für doppelte Anführungszeichen. - QUOTE_CHARACTER (optional): das Zeichen, das Werte aus Spalten mit dem Datentyp „String“ umschließt.
Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein.
22
steht beispielsweise für doppelte Anführungszeichen. - FIELD_DELIMITER (optional): das Zeichen, das die Spaltenwerte aufteilt. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein.
2C
steht beispielsweise für ein Komma.
JSON-Text anfordern:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE", "database": "DATABASE_NAME", "user": "USER", "csvImportOptions": { "table": "TABLE_NAME", "columns": ["COLUMN1", "COLUMN2"], "fieldDelimiter": "FIELD_DELIMITER", "quoteCharacter": "QUOTE_CHARACTER", "escapeCharacter": "ESCAPE_CHARACTER" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
und führen Sie den folgenden Befehl aus:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
PowerShell (Windows)
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
und führen Sie den folgenden Befehl aus:$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
Sie erhalten eine JSON-Antwort, die in etwa so aussieht:
Antwort
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-17T06:05:31.244428646Z", "target": "projects/project-id/locations/location-id/clusters/target-cluster", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese jetzt.
Die vollständige Liste der Parameter für die Anfrage finden Sie unter
clusters:import
.
CSV-Format anpassen und Datei importieren
Sie können das CSV-Format anpassen und die Datei importieren, wenn die CSV-Datei ein nicht standardmäßiges Feldtrennzeichen oder Anführungszeichen oder Escape-Zeichen enthält. Wenn Sie eine CSV-Datei mit einem anderen Format importieren möchten, müssen Sie in der Anfrage dieselben Formatierungsoptionen angeben.
Anhand der folgenden Beispiele für die gcloud CLI und die REST API können Sie das CSV-Dateiformat anpassen.
gcloud
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' --user=USERNAME --table=TABLE_NAME --columns=COLUMNS --field-delimiter='2C' --quote-character='22' --escape-character='5C' --csv
REST Version 1
Der entsprechende REST API-Anfragetext sieht in etwa so aus:
{
"gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
"database": "DATABASE_NAME",
"user": "USER",
"csvImportOptions": {
"table": "TABLE_NAME",
"columns": ["COLUMN1", "COLUMN2"],
"escapeCharacter": "5C",
"quoteCharacter": "22",
"fieldDelimiter": "2C",
}
}
Informationen zur Struktur der dieser Aufgabe zugrunde liegenden REST API-Anfrage finden Sie im APIs Explorer auf der Seite clusters:import
.
Wenn ein Fehler wie INVALID_ARGUMENT
angezeigt wird, prüfen Sie, ob die Tabelle vorhanden ist. Falls die Tabelle vorhanden ist, sollten Sie nachsehen, ob Sie die richtigen Berechtigungen für den Bucket haben.
Hilfe zum Konfigurieren der Zugriffssteuerung in Cloud Storage finden Sie unter Access Control Lists (ACLs) erstellen und verwalten.
Status eines Importvorgangs prüfen
So prüfen Sie den Status eines Importvorgangs:
gcloud
Führen Sie Folgendes mit dem Befehl gcloud alloydb operations describe aus:
gcloud alloydb operations describe OPERATION_ID --region=REGION
Der Status dieser Vorgänge wird im Feld STATUS
angezeigt.
Sie können auch Details eines bestimmten Vorgangs auflisten oder einen bestimmten Vorgang abbrechen. Weitere Informationen zu diesem Befehl finden Sie auf der Referenzseite zum gcloud alloydb operations
-Befehl.
REST Version 1
Verwenden Sie die Methode GET
und die folgende URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Weitere Informationen finden Sie unter get
.
Ersetzen Sie diese Werte in den folgenden Anweisungen:
- REGION: die Region, in der der AlloyDB-Cluster bereitgestellt wird.
- PROJECT_ID: Projekt-ID.
- OPERATION_ID: die ID des Importvorgangs. Weitere Informationen finden Sie unter Vorbereitung.
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Führen Sie folgenden Befehl aus:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell (Windows)
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content
Sie erhalten eine JSON-Antwort, die in etwa so aussieht:
Bei erfolgreicher Ausführung enthält der Antworttext eine Operation-Instanz.
Nächste Schritte
- Informationen zum Importieren einer SQL-Datei
- Weitere Informationen zum Abbrechen eines Importvorgangs
- Status eines Importvorgangs prüfen