SQL-Datei importieren

Wenn Sie eine Datenbank aus einem Nur-Text-Skript mit SQL-Befehlen rekonstruieren möchten, können Sie eine in einem Cloud Storage-Bucket gespeicherte SQL-Datei in einen AlloyDB for PostgreSQL-Cluster importieren.

Sie können den Datenimport in AlloyDB-Cluster abbrechen. Weitere Informationen finden Sie unter Importvorgang abbrechen.

Achten Sie beim Importieren von SQL-Dumpdateien darauf, dass die PostgreSQL-Version, aus der der Dump erstellt wurde, mit der PostgreSQL-Version Ihrer AlloyDB-Instanz kompatibel ist. Der Import einer Dumpdatei aus einer höheren Version in eine niedrigere Version kann aufgrund einer inkompatiblen SQL-Syntax fehlschlagen.

Hinweis

Für einen Importvorgang ist Folgendes zu beachten:

  • Sorgen Sie dafür, dass in Ihrer Datenbank ausreichend Speicherkontingent 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

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:

  • storage.objectViewer IAM-Rolle.
  • Eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
    • storage.objects.get

Informationen zu IAM-Rollen finden Sie unter Identity and Access Management.

SQL-Datei in AlloyDB-Cluster importieren

So importieren Sie Daten mithilfe einer SQL-Datei in einen AlloyDB-Cluster:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

    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 SQL 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, um eine SQL-Datei auf Ihrem lokalen Computer auszuwählen.
      3. Klicken Sie neben Cloud Storage-Speicherort auswählen auf Durchsuchen, um einen Cloud Storage-Speicherort für die hochgeladene lokale Datei auszuwählen.
      4. Klicken Sie auf Hochladen, um die Datei hochzuladen.
    2. So wählen Sie eine SQL-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, um eine SQL-Datei aus einem Cloud Storage-Bucket auszuwählen.
  6. Wählen Sie im Drop-down-Menü Datenbank die Datenbank aus, in die die Daten importiert werden sollen.

    Wenn Ihre SQL-Dumpdatei einen Metabefehl \connect (oder \c) enthält, wird die Zieldatenbank überschrieben, die Sie in der Google Cloud Console auswählen.

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

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

gcloud

  1. Cloud Storage-Bucket erstellen
  2. Laden Sie die SQL-Datei in Ihren Bucket hoch. Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  3. Weisen Sie mit gcloud storage buckets add-iam-policy-binding dem AlloyDB-Clusterdienstkonto für den Bucket die IAM-Rolle storage.objectViewer zu:

    service-PROJECT_NUMBER@gcp-sa-alloydb.

    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 \
      --database=DATABASE_NAME \
      --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' \
      --user=USERNAME \
      --sql

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME ist der Name des Clusters.
    • REGION: die Region, in der der AlloyDB-Cluster bereitgestellt wird.
    • DATABASE_NAME: der Name einer Datenbank im Cluster.
    • BUCKET_NAME: der Name des Cloud Storage-Buckets.
    • PATH_TO_SQL_FILE: der Pfad zur SQL-Datei.
    • USERNAME: der Nutzer für den Importvorgang.

    Wenn durch den Befehl ein Fehler wie PERMISSION_DENIED zurückgegeben wird, prüfen Sie die Berechtigungen.

    Informationen zum Verwenden des Befehls import finden Sie auf der Referenzseite des Befehls gcloud alloydb clusters import.

  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten müssen, entfernen Sie sie mit gcloud storage buckets remove-iam-policy-binding.

REST Version 1

  1. Cloud Storage-Bucket erstellen
  2. Laden Sie die SQL-Datei in Ihren Bucket hoch. Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.
  3. Weisen Sie mit gcloud storage buckets add-iam-policy-binding dem AlloyDB-Clusterdienstkonto für den Bucket die IAM-Rolle storage.objectViewer zu. Das Format für das Dienstkonto sieht so aus:

    service-PROJECT_NUMBER@gcp-sa-alloydb.

    Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.

  4. Importieren Sie Ihre SQL-Datei.

    Verwenden Sie die folgende HTTP-Methode und URL:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import

    Ersetzen Sie folgende Werte in den Anfragedaten:

    • 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_SQL_FILE: der Pfad zur SQL-Datei.
    • USER: der Nutzer, der für den Import verwendet werden soll.
    • DATABASE_NAME: Der Name einer Datenbank im AlloyDB-Cluster.

    JSON-Text der Anfrage:

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

    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 wie diese:

    Antwort

    {
     "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
      "createTime": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

    Wenn Sie einen anderen Nutzer für den Import verwenden möchten, geben Sie das Nutzerattribut an.

  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

    Die vollständige Liste der Parameter für die Anfrage finden Sie unter clusters.import.

Status eines Importvorgangs prüfen

So prüfen Sie den Status eines Importvorgangs:

gcloud

Führen Sie den folgenden Befehl mit gcloud alloydb operations describe aus:

gcloud alloydb operations describe OPERATION_ID --region=REGION

Sie können auch Details zu einem bestimmten Vorgang auflisten oder einen bestimmten Vorgang abbrechen. Weitere Informationen zu diesem Befehl finden Sie auf der Referenzseite für den Befehl gcloud alloydb operations.

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: 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 den 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 den 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

Wenn der Vorgang erfolgreich abgeschlossen wurde, enthält der Antworttext eine Instanz von Operation.

Nächste Schritte