Daten in Cloud SQL importieren

Auf dieser Seite wird beschrieben, wie Sie Daten in Cloud SQL-Instanzen importieren. Sie können Daten aus SQL-Dump- oder CSV-Dateien importieren.

Best Practices zum Importieren von Daten finden Sie unter Best Practices zum Importieren und Exportieren von Daten.

Prüfen Sie die Ergebnisse nach Abschluss eines Importvorgangs.

Hinweis

Prüfen Sie, ob die erforderlichen Rollen und Berechtigungen konfiguriert sind. Dazu müssen Sie eine Datei aus Cloud Storage importieren. Zum Importieren von Daten aus Cloud Storage muss das Dienstkonto oder der Nutzer der Cloud SQL-Instanz Folgendes haben:

  • Entweder die Rolle Cloud SQL-Administrator oder eine benutzerdefinierte Rolle, die die Berechtigung cloudsql.instances.import enthält.
  • Die IAM-Rolle roles/storage.LegacyObjectReader (mit der Berechtigung storage.objects.get).
  • Wenn das Dienstkonto oder der Nutzer auch Exportvorgänge ausführt, erteilen Sie die Berechtigung cloudsql.instances.export und die IAM-Rolle roles/storage.legacyBucketWriter.

Informationen zu IAM-Rollen finden Sie unter Cloud Identity and Access Management für Cloud Storage.

Sie finden den Dienstkontonamen der Instanz in der Google Cloud Console auf der Seite Übersicht Ihrer Instanz. Sie können die Rollen für Ihren Cloud Storage-Bucket mit dem gsutil-Tool überprüfen:

gsutil iam get gs://[BUCKET_NAME]

Weitere Informationen zur Verwendung von IAM mit Buckets

Daten aus einer SQL-Dumpdatei in Cloud SQL importieren

  • Erstellen Sie eine SQL-Dumpdatei. Folgen Sie unten der Anleitung, die auf Ihre Situation zutrifft. In dieser Anleitung werden bestimmte Flags festgelegt, durch die die Dumpdatei mit Cloud SQL kompatibel werden.

  • Die Datenbank und die Tabelle, in die der Import erfolgen soll, müssen in der Cloud SQL-Instanz bereits vorhanden sein. Informationen zum Erstellen einer Datenbank finden Sie unter Datenbank erstellen.
  • Prüfen Sie vor dem Import eines SQL-Dumps, dass alle Nutzer, die Objekte in der Dumpdatenbank enthalten oder Berechtigungen dafür haben, in der neuen Datenbank vorhanden sind. Andernfalls werden die Objekte mit den ursprünglichen Eigentumsrechten und/oder Berechtigungen nicht neu erstellt. (Dies kann zwar in einigen Fällen erwünscht sein, in der Regel ist es das jedoch nicht.)

    Hilfe zum Erstellen von Nutzern finden Sie unter Nutzer erstellen.

So importieren Sie Daten aus einer SQL-Dumpdatei in eine Cloud SQL-Instanz:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Cloud SQL-Instanzen".

    Zur Seite „Cloud SQL-Instanzen“

  2. Wählen Sie die Instanz aus, um die zugehörige Übersichtsseite zu öffnen.
  3. Klicken Sie in der Schaltflächenleiste auf Importieren.
  4. Geben Sie unter Wählen Sie die Datei aus, aus der Sie Daten importieren möchten den Pfad zum Bucket und zur SQL-Dumpdatei für den Import ein. Oder öffnen Sie die Datei:
    1. Klicken Sie auf Durchsuchen.
    2. Klicken Sie unter Speicherort doppelt auf den Namen des Buckets in der Liste.
    3. Wählen Sie die Datei in der Liste aus.
    4. Klicken Sie auf Auswählen.

    Sie können eine komprimierte Datei (.gz) oder eine unkomprimierte Datei (.sql) importieren.

  5. Wählen Sie unter Format die Option SQL aus.
  6. Wählen Sie die Datenbank aus, in die die Daten importiert werden sollen.

    Dadurch führt Cloud SQL vor dem Import die Anweisung USE DATABASE aus.

  7. Wählen Sie bei Bedarf einen PostgreSQL-Nutzer für den Import aus.

    Wenn Ihre Importdatei Anweisungen enthält, die von einem bestimmten PostgreSQL-Nutzer ausgeführt werden müssen, können Sie mit diesem Feld einen Nutzer angeben.

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

gcloud

  1. Erstellen Sie einen Cloud Storage-Bucket, falls noch nicht geschehen.

    Informationen zum Erstellen eines Buckets finden Sie unter Storage-Buckets erstellen.

  2. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  3. Beschreiben Sie die Instanz, in die Sie Daten importieren:
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. Kopieren Sie das Feld serviceAccountEmailAddress.
  5. Weisen Sie mit gsutil iam die IAM-Rolle storage.objectAdmin dem Dienstkonto für den Bucket zu.
      gsutil iam ch serviceAccount:[SERVICE-ACCOUNT]:objectAdmin \
      gs://[BUCKET-NAME]
      
    Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  6. Importieren Sie die Datenbank:
    gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME] \
                                --database=[DATABASE_NAME]
    

    Informationen zum Verwenden des Befehls import sql finden Sie auf der Referenzseite des Befehls sql import sql.

    Wenn durch den Befehl ein Fehler wie ERROR_RDBMS zurückgegeben wird, prüfen Sie die Berechtigungen. Dieser Fehler wird oft durch Berechtigungsprobleme verursacht.

  7. Wenn Sie die zuvor festgelegten Cloud IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese mit gsutil iam.

REST API v1beta4

    Erstellen Sie eine SQL-Dumpdatei. Folgen Sie unten der Anleitung, die auf Ihre Situation zutrifft. In dieser Anleitung werden bestimmte Flags festgelegt, durch die die Dumpdatei mit Cloud SQL kompatibel werden.

  1. Erstellen Sie einen Cloud Storage-Bucket, falls noch nicht geschehen.

    Informationen zum Erstellen eines Buckets finden Sie unter Storage-Buckets erstellen.

  2. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  3. Weisen Sie Ihrer Instanz die IAM-Rolle storage.objectAdmin für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  4. Importieren Sie die Dumpdatei:

    Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • bucket_name: der Name des Cloud Storage-Buckets
    • path_to_sql_file: der Pfad zur SQL-Datei
    • database_name: der Name einer Datenbank in der Cloud SQL-Instanz

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

    Die vollständige Parameterliste für diese Anfrage finden Sie auf der Seite instances:import.
  5. Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese jetzt.
Informationen zum Erstellen der zugrunde liegenden REST API-Anfrage für diese Aufgabe finden Sie im APIs Explorer auf der Seite "Instanzimporte".

Daten aus einer CSV-Datei in Cloud SQL importieren

  • Die Datenbank und die Tabelle, in die der Import erfolgen soll, müssen in der Cloud SQL-Instanz bereits vorhanden sein. Informationen zum Erstellen einer Datenbank finden Sie unter Datenbank erstellen. Verwenden Sie zum Erstellen einer Tabelle in der Datenbank die SQL-Anweisung CREATE TABLE im psql-Client.
  • Ihre CSV-Datei muss den im nächsten Abschnitt dargestellten Formatanforderungen an CSV-Dateien entsprechen.

Formatanforderungen an CSV-Dateien

Die CSV-Dateien müssen eine Zeile pro Datensatz und kommagetrennte Felder haben.

Anleitungen zum Exportieren in eine für Cloud SQL formatierte CSV-Datei finden Sie unter Daten aus Cloud SQL in eine CSV-Datei exportieren.

So importieren Sie Daten aus einer CSV-Datei in eine Cloud-SQL-Instanz:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Cloud SQL-Instanzen".

    Zur Seite „Cloud SQL-Instanzen“

  2. Wählen Sie die Instanz aus, um die zugehörige Übersichtsseite zu öffnen.
  3. Klicken Sie in der Schaltflächenleiste auf Importieren.
  4. Geben Sie unter Wählen Sie die Datei aus, aus der Sie Daten importieren möchten den Pfad zum Bucket und zur CSV-Datei für den Import ein. Oder öffnen Sie die Datei:
    1. Klicken Sie auf Durchsuchen.
    2. Klicken Sie unter Speicherort doppelt auf den Namen des Buckets in der Liste.
    3. Wählen Sie die Datei in der Liste aus.
    4. Klicken Sie auf Auswählen.

    Sie können eine komprimierte Datei (.gz) oder eine unkomprimierte Datei (.csv) importieren.

  5. Wählen Sie unter Format die Option CSV aus.
  6. Geben Sie die Datenbank und die Tabelle in der Cloud SQL-Instanz an, in die die CSV-Datei importiert werden soll.
  7. Sie können optional einen Nutzer für den Import angeben.
  8. Klicken Sie auf Importieren, um den Import zu starten.

gcloud

  1. Erstellen Sie einen Cloud Storage-Bucket, falls noch nicht geschehen.

    Informationen zum Erstellen eines Buckets finden Sie unter Storage-Buckets erstellen.

  2. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  3. Laden Sie Daten aus der CSV-Datei in den Bucket hoch.
  4. Geben Sie die Instanz an, aus der Sie exportieren möchten:
    gcloud sql instances describe [INSTANCE_NAME]
    
  5. Kopieren Sie das Feld serviceAccountEmailAddress.
  6. Weisen Sie mit gsutil iam die IAM-Rolle storage.objectAdmin dem Dienstkonto für den Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  7. Importieren Sie die Datei:
    gcloud sql import csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --table=[TABLE_NAME]
    

    Informationen zum Verwenden des Befehls import csv finden Sie auf der Referenzseite des Befehls sql import csv.

  8. Wenn Sie die zuvor festgelegten Cloud IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese mit gsutil iam.

REST API v1beta4

  1. Erstellen Sie einen Cloud Storage-Bucket, falls noch nicht geschehen.

    Informationen zum Erstellen eines Buckets finden Sie unter Storage-Buckets erstellen.

  2. Laden Sie die Datei in den Bucket hoch.

    Informationen zum Hochladen von Dateien in Buckets finden Sie unter Objekte hochladen.

  3. Weisen Sie Ihrer Instanz die IAM-Rolle storage.objectAdmin für Ihren Bucket zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.
  4. Importieren Sie Daten aus der Datei:

    Ersetzen Sie diese Werte in den folgenden Anweisungen:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • bucket_name: der Name des Cloud Storage-Buckets
    • path_to_csv_file: der Pfad zur CSV-Datei
    • database_name: der Name einer Datenbank in der Cloud SQL-Instanz
    • table_name: der Name der Datenbanktabelle

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    JSON-Text anfordern:

    {
     "importContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "database": "database_name",
          "csvImportOptions":
           {
             "table": "table_name"
           }
       }
    }
    
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

    Die vollständige Parameterliste für diese Anfrage finden Sie auf der Seite instances:import.
  5. Wenn Sie die zuvor festgelegten Cloud IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese.

Wenn ein Fehler wie z. B. ERROR_RDBMS angezeigt wird, prüfen Sie, ob die Tabelle vorhanden ist. Ist die Tabelle vorhanden, sollten Sie ermitteln, 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.

Informationen zum Erstellen der zugrunde liegenden REST API-Anfrage für diese Aufgabe finden Sie im APIs Explorer auf der Seite "Instanzimporte".

Daten mithilfe von pg_restore in Cloud SQL importieren

Mit dem Dienstprogramm pg_restore können Sie eine Datenbank in Cloud SQL importieren. pg_restore funktioniert nur mit Archivdateien, die von pg_dump erstellt wurden. Weitere Informationen zu pg_restore finden Sie hier

Wenn die Dumpdatei im Nur-Text-Format erstellt wurde, führen Sie den folgenden Befehl aus:

pg_restore -h CLOUD_SQL_INSTANCE_IP -U USERNAME --format=plain --no-owner --no-acl -d DATABASE_NAME SQL_FILE.sql

Wenn die Dumpdatei mit benutzerdefiniertem Format erstellt wurde, führen Sie den folgenden Befehl aus:

pg_restore --list  DATABASE_NAME .dmp | sed -E 's/(.* EXTENSION )/; \1/g' >  DATABASE_NAME .toc

Bei der sed-Nachbearbeitung werden alle Erweiterungsanweisungen in der SQL-Dumpdatei auskommentiert.

Für den parallelen Import verwenden Sie das Flag -j NUM_CORES. NUM_CORES ist die Anzahl der Kerne auf der Quellinstanz. Verwenden Sie dasselbe Flag mit pg_dump, um parallel zu exportieren.

Fehlerbehebung

Klicken Sie auf die Links in der Tabelle, um weitere Informationen zu erhalten:

Problem Mögliche Ursache Lösungsvorschlag
Import dauert zu lange. Zu viele aktive Verbindungen können Importvorgänge beeinträchtigen. Schließen Sie nicht verwendete Verbindungen oder starten Sie die Cloud SQL-Instanz neu, bevor Sie einen Importvorgang starten.
Import schlägt fehl. Die exportierte Datei kann Datenbanknutzer enthalten, die noch nicht vorhanden sind. Bereinigen Sie die fehlgeschlagene Datenbank, bevor Sie den Import wiederholen. Erstellen Sie die Datenbanknutzer, bevor Sie den Import ausführen.

Import dauert zu lange

Der Import dauert zu lange und blockiert andere Vorgänge.

Mögliche Ursache

Zu viele aktive Verbindungen können Importvorgänge beeinträchtigen. Verbindungen beanspruchen CPU und Arbeitsspeicher, was die verfügbaren Ressourcen begrenzt.

Lösungsvorschlag

Schließen Sie nicht verwendete Vorgänge. Prüfen Sie die CPU- und Arbeitsspeichernutzung, um dafür zu sorgen, dass genügend Ressourcen verfügbar sind. Die beste Methode, maximale Ressourcen für den Importvorgang zu gewährleisten, ist ein Neustart der Instanz vor Beginn des Vorgangs. Ein Neustart

  • beendet alle Verbindungen und
  • beendet alle Aufgaben, die möglicherweise Ressourcen nutzen.


Import schlägt fehl

Der Import schlägt fehl, wenn ein oder mehrere Nutzer, auf die in der exportierten SQL-Dumpdatei verwiesen wird, nicht vorhanden sind.

Mögliche Ursache

Vor dem Import eines SQL-Dumps müssen alle Datenbanknutzer vorhanden sein, die Inhaber von Objekten sind oder Berechtigungen für Objekte in der gespeicherten Datenbank erhalten haben. Andernfalls werden die Objekte mit den ursprünglichen Inhaberrechten und/oder Berechtigungen nicht wiederhergestellt.

Lösungsvorschlag

Bereinigen Sie die fehlgeschlagene Datenbank, bevor Sie den Import wiederholen. Erstellen Sie die Datenbanknutzer, bevor Sie den SQL-Dump importieren.


Nächste Schritte