CSV-Datei importieren

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.

Hinweis

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:

Darüber hinaus muss das Dienstkonto für den AlloyDB-Cluster eine der folgenden Rollen haben:

  • Die IAM-Rolle storage.objectViewer
  • 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 Tabelle, in die Sie importieren, 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 aus einer CSV-Datei in einen AlloyDB-Cluster:

Console

  1. Zur Clusterseite.

    Zu den Clustern

  2. Klicken Sie auf einen Clusternamen, um die Seite Übersicht für diesen Cluster zu öffnen.

  3. Klicken Sie auf Importieren.

  4. Wählen Sie unter Dateiformat die Option CSV aus.

  5. Wählen Sie unter Quelldatei auswählen aus, ob Sie Dateien von Ihrem Computer hochladen oder eine Datei aus einem Cloud Storage-Speicherort auswählen möchten.

    1. So laden Sie eine Datei von Ihrem Computer hoch:

      1. Wählen Sie Dateien von Ihrem Computer hochladen aus.
      2. Klicken Sie neben Lokale Datei auswählen auf Durchsuchen und wählen Sie eine CSV-Datei von Ihrem lokalen Computer aus.
      3. Klicken Sie neben Cloud Storage-Speicherort auswählen auf Durchsuchen und wählen Sie einen Cloud Storage-Speicherort aus, in dem die hochgeladene lokale Datei gespeichert werden soll.
      4. Klicken Sie auf Hochladen , um die Datei hochzuladen.
    2. So wählen Sie eine CSV-Datei aus, die sich in einem Cloud Storage-Bucket befindet:

      1. Wählen Sie Datei aus Google Cloud Storage auswählen aus.
      2. Klicken Sie neben bucket-name/file-name auf Durchsuchen und wählen Sie eine CSV-Datei aus einem Cloud Storage-Bucket aus.
  6. Wählen Sie im Drop-down-Menü Datenbank die Datenbank aus, in die die Daten importiert werden sollen.

  7. Wählen Sie im Drop-down-Menü Tabelle die Tabelle in der Datenbank aus.

  8. Optional. Wenn Sie einen Nutzer für den Importvorgang angeben möchten, klicken Sie auf Nutzeroptionen anzeigen und geben Sie den Nutzernamen in das Feld Nutzer ein.

  9. Klicken Sie auf Importieren, um den Importvorgang zu starten.

gcloud

  1. Cloud Storage-Bucket erstellen.
  2. Laden Sie die CSV-Datei in den Bucket hoch. Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.
  3. 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.

  4. 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 ist die Region, in der der AlloyDB-Cluster bereitgestellt wird.
    • BUCKET_NAME ist der Name des Cloud Storage -Buckets.
    • FILE_NAME ist der Name der CSV-Datei.
    • DATABASE_NAME ist der Name einer Datenbank im Cluster.
    • USER ist der Nutzer für den Importvorgang.
    • TABLE_NAME ist die Tabelle in der Datenbank.

    Weitere Informationen zur Verwendung des importBefehls finden Sie auf der alloydb import Befehlsreferenzseite.

  5. 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

  1. Cloud Storage-Bucket erstellen.
  2. Laden Sie die CSV-Datei in den Bucket hoch. Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.
  3. Gewähren Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Importvorgang. Verwenden Sie das Dienstkontoformat, um das Dienstkonto für das Projekt zu identifizieren, in das Sie importieren. Das Format für das Dienstkonto ist wie folgt:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
  4. Verwenden Sie gcloud storage buckets add-iam-policy-binding um dem AlloyDB-Cluster-Dienstkonto für den Bucket die storage.objectViewer IAM-Rolle zuzuweisen. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.

  5. 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 folgende Werte in den Anfragedaten:

    • PROJECT_ID ist die Projekt-ID.
    • LOCATION_ID: die Region, in der der AlloyDB-Cluster bereitgestellt wird.
    • CLUSTER_ID ist die Cluster-ID.
    • BUCKET_NAME ist der Name des Cloud Storage -Buckets.
    • PATH_TO_CSV_FILE ist der Pfad zur CSV-Datei.
    • USER ist der Nutzer für den Importvorgang.
    • DATABASE_NAME ist der Name einer Datenbank im AlloyDB-Cluster.
    • TABLE_NAME ist die Tabelle in der Datenbank.
    • COLUMNS (optional) sind die zu importierenden Spalten.
    • ESCAPE_CHARACTER (optional) ist das Zeichen, das vor einem Datenzeichen stehen muss, das maskiert werden muss. Der Wert dieses Arguments muss als ein Zeichen im Hex-ASCII-Code angegeben werden. 22 steht beispielsweise für ein doppeltes Anführungszeichen.
    • QUOTE_CHARACTER (optional) ist das Zeichen , das Werte aus Spalten mit dem Datentyp „String“ umschließt. Der Wert dieses Arguments muss als ein Zeichen im Hex-ASCII-Code angegeben werden. 22 steht beispielsweise für ein doppeltes Anführungszeichen.
    • FIELD_DELIMITER (optional) ist das Zeichen , das Spaltenwerte trennt. Der Wert dieses Arguments muss als ein Zeichen im Hex-ASCII-Code angegeben werden. 2C steht beispielsweise für ein Komma.

    JSON-Text der Anfrage:

    {
      "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 ähnlich der folgenden:

    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
    }
    
  6. 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 anderes Feldtrennzeichen oder andere Anführungs- oder Maskierungszeichen als die Standardzeichen enthält. Wenn Sie eine CSV-Datei mit einem anderen Format als dem Standardformat 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 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 zum Aufbau der zugrunde liegenden REST API-Anfrage für diese Aufgabe finden Sie im APIs Explorer auf der Seiteclusters:import.

Wenn Sie einen Fehler wie INVALID_ARGUMENT erhalten, prüfen Sie, ob die Tabelle vorhanden ist. Wenn die Tabelle vorhanden ist, prüfen Sie, 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 den folgenden Befehl 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 gcloud alloydb operations Referenzseite zum 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 folgende Werte in den Anfragedaten:

  • REGION ist die Region, in der der AlloyDB-Cluster bereitgestellt wird.
  • PROJECT_ID ist die Projekt-ID.
  • OPERATION_ID ist 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 ähnlich der folgenden:

Bei erfolgreicher Ausführung enthält der Antworttext eine Instanz von Operation.

Nächste Schritte