Esportazione e importazione mediante file CSV

Questa pagina descrive l'esportazione e l'importazione di dati nelle istanze Cloud SQL utilizzando file CSV.

Prima di iniziare

Prima di iniziare un'operazione di esportazione o importazione:

  • Assicurati che il database disponga di spazio libero sufficiente.
  • Le operazioni di esportazione e importazione utilizzano le risorse del database, ma non interferiscono con le normali operazioni del database, a meno che il provisioning dell'istanza non sia insufficiente.

  • Verifica che il file CSV contenga i dati previsti e che sia nel formato corretto. I file CSV devono avere una riga per ogni riga di campi di dati.
  • Segui le best practice per l'esportazione e l'importazione dei dati.

Esporta dati da Cloud SQL per PostgreSQL

Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL

Per esportare i dati da Cloud SQL in Cloud Storage, l'utente che avvia l'esportazione deve avere uno dei seguenti ruoli:

Inoltre, il account di servizio dell'istanza Cloud SQL deve avere uno dei seguenti ruoli:

  • Il ruolo IAM (Identity and Access Management) storage.objectAdmin
  • Un ruolo personalizzato, incluse le seguenti autorizzazioni:
    • storage.objects.create
    • storage.objects.list (solo per l'esportazione di file in parallelo)
    • storage.objects.delete (solo per l'esportazione parallela dei file)

Per assistenza con i ruoli IAM, consulta Identity and Access Management.

Esporta i dati in un file CSV da Cloud SQL per PostgreSQL

Puoi esportare i dati in formato CSV, utilizzabile da altri strumenti e ambienti. Le esportazioni avvengono a livello di database. Durante un'esportazione CSV, puoi specificare gli schemi da esportare. Tutti gli schemi a livello di database sono idonei per l'esportazione.

Per esportare i dati da un database su un'istanza Cloud SQL in un file CSV in un bucket Cloud Storage:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Esporta.
  4. Nella sezione Formato file, fai clic su CSV.
  5. Nella sezione Dati da esportare, seleziona il nome del database dal menu a discesa Database.
  6. In Query SQL, inserisci una query SQL per specificare la tabella da cui esportare i dati.

    Ad esempio, per esportare l'intero contenuto della tabella entries nel database guestbook, inserisci

    SELECT * FROM guestbook.entries;
    La query deve specificare una tabella nel database specificato. Non puoi esportare un intero database in formato CSV.

  7. (Facoltativo) Seleziona Esegui l'offload dell'esportazione in un'istanza temporanea per consentire l'esecuzione di altre operazioni mentre l'esportazione è in corso.
  8. Nella sezione Destinazione, aggiungi il nome del bucket, della cartella e del file in cui vuoi eseguire l'esportazione oppure fai clic su Sfoglia per trovare o creare un bucket, una cartella o un file.

    Se fai clic su Sfoglia:

    1. Nella sezione Località, seleziona un bucket Cloud Storage o una cartella per l'esportazione.
    2. Nella casella Nome, aggiungi un nome per il file CSV o seleziona un file esistente dall'elenco nella sezione Posizione.

      Puoi utilizzare un'estensione del file .gz (l'estensione completa sarebbe .csv.gz) per comprimere il file di esportazione.

    3. Fai clic su Seleziona.
  9. Fai clic su Esporta per avviare l'esportazione.

gcloud

  1. Crea un bucket Cloud Storage.
  2. Carica il file nel bucket.

    Per assistenza sul caricamento di file nei bucket, consulta Caricamento di oggetti.

  3. Trova il account di servizio per l'istanza Cloud SQL da cui stai eseguendo l'esportazione. Puoi farlo eseguendo il comando gcloud sql instances describe. Cerca il campo serviceAccountEmailAddress nell'output.
    gcloud sql instances describe INSTANCE_NAME
  4. Utilizza gcloud storage buckets add-iam-policy-binding per concedere il storage.objectAdmin ruolo IAM al account di servizio dell'istanza Cloud SQL. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  5. Esporta il database:
    gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME \
    --offload \
    --query=SELECT_QUERY
    

    Per informazioni sull'utilizzo del comando export csv, consulta la pagina di riferimento del comando sql export csv.

  6. Se non hai bisogno di conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.

REST v1

  1. Crea un bucket per l'esportazione:
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
    

    Questo passaggio non è obbligatorio, ma è vivamente consigliato per non aprire l'accesso ad altri dati.

  2. Fornisci alla tua istanza il ruolo IAM storage.objectAdmin per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  3. Esporta il database:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • project-id: l'ID progetto
    • instance-id: l'ID istanza
    • bucket_name: il nome del bucket Cloud Storage
    • path_to_csv_file: il percorso del file CSV
    • database_name: il nome di un database all'interno dell'istanza Cloud SQL
    • offload: attiva l'esportazione serverless. Imposta su true per utilizzare l'esportazione serverless.
    • select_query: query SQL per l'esportazione (facoltativa)
    • escape_character: il carattere che deve essere visualizzato prima di un carattere di dati che deve essere sottoposto a escape. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • quote_character:il carattere che racchiude i valori delle colonne con un tipo di dati stringa. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • fields_terminated_by: il carattere che divide i valori delle colonne. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "2C" rappresenta una virgola. (facoltativo)
    • lines_terminated_by: il carattere che suddivide i record di riga. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "0A" rappresenta una nuova riga. (facoltativo)

    Metodo HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    Corpo JSON della richiesta:

    {
     "exportContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "databases": "database_name",
          "offload": true | false
          "csvExportOptions":
           {
               "selectQuery":"select_query",
               "escapeCharacter":"escape_character",
               "quoteCharacter":"quote_character",
               "fieldsTerminatedBy":"fields_terminated_by",
               "linesTerminatedBy":"lines_terminated_by"
           }
       }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Devi specificare esattamente un database con la proprietà databases e, se la query di selezione specifica un database, deve essere lo stesso.

  4. Se non hai bisogno di conservare le autorizzazioni IAM impostate in precedenza, rimuovile ora.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:export.

REST v1beta4

  1. Crea un bucket per l'esportazione:
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    Questo passaggio non è obbligatorio, ma è vivamente consigliato per non aprire l'accesso ad altri dati.

  2. Fornisci alla tua istanza il storage.objectAdmin ruolo IAM per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  3. Esporta il database:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • project-id: l'ID progetto
    • instance-id: l'ID istanza
    • bucket_name: il nome del bucket Cloud Storage
    • path_to_csv_file: il percorso del file CSV
    • database_name: il nome di un database all'interno dell'istanza Cloud SQL
    • offload: attiva l'esportazione serverless. Imposta su true per utilizzare l'esportazione serverless.
    • select_query: query SQL per l'esportazione (facoltativo)
    • escape_character: il carattere che deve essere visualizzato prima di un carattere di dati che deve essere sottoposto a escape. Il valore di questo argomento deve essere in formato esadecimale ASCII. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • quote_character: il carattere che racchiude i valori delle colonne con un tipo di dati stringa. Il valore di questo argomento deve essere in formato esadecimale ASCII. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • fields_terminated_by: il carattere che divide i valori delle colonne. Il valore di questo argomento deve essere nel formato esadecimale ASCII. Ad esempio, "2C" rappresenta una virgola. (facoltativo)
    • lines_terminated_by: il carattere che suddivide i record di riga. Il valore di questo argomento deve essere nel formato esadecimale ASCII. Ad esempio, "0A" rappresenta una nuova riga. (facoltativo)

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
     "exportContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "databases": "database_name",
          "offload": true | false
          "csvExportOptions":
           {
               "selectQuery": "select_query",
               "escapeCharacter":  "escape_character",
               "quoteCharacter": "quote_character",
               "fieldsTerminatedBy": "fields_terminated_by",
               "linesTerminatedBy": "lines_terminated_by"
           }
       }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Devi specificare esattamente un database con la proprietà databases e, se la query di selezione specifica un database, deve essere lo stesso.

  4. Se non hai bisogno di conservare il ruolo IAM impostato in precedenza, revocalo ora.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:export.

Personalizza il formato di un file di esportazione CSV

Puoi utilizzare gcloud o l'API REST per personalizzare il formato file CSV. Quando esegui un'esportazione, puoi specificare le seguenti opzioni di formattazione:

Opzione CSV Valore predefinito gcloud flag Proprietà API REST Descrizione
Esc

"5C"

Codice esadecimale ASCII per il separatore di file.

--escape escapeCharacter

Carattere che appare prima di un carattere di dati che deve essere sottoposto a escape.

Disponibile solo per MySQL e PostgreSQL.

Citazione

"22"

Codice esadecimale ASCII per le virgolette doppie.

--quote quoteCharacter

Carattere che racchiude i valori delle colonne con un tipo di dati stringa.

Disponibile solo per MySQL e PostgreSQL.

Delimitatore di campo

"2C"

Codice esadecimale ASCII per la virgola.

--fields-terminated-by fieldsTerminatedBy

Carattere che suddivide i valori delle colonne.

Disponibile solo per MySQL e PostgreSQL.

Carattere di nuova riga

"0A"

Codice esadecimale ASCII per la nuova riga.

--lines-terminated-by linesTerminatedBy

Carattere che divide i record di riga.

Disponibile solo per MySQL.

Ad esempio, un comando gcloud che utilizza tutti questi argomenti potrebbe essere il seguente:

gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
--database=DATABASE_NAME \
--offload \
--query=SELECT_QUERY \
--quote="22" \
--escape="5C" \
--fields-terminated-by="2C" \
--lines-terminated-by="0A"

Il corpo della richiesta API REST equivalente sarà simile al seguente:

{
 "exportContext":
   {
      "fileType": "CSV",
      "uri": "gs://bucket_name/path_to_csv_file",
      "databases": ["DATABASE_NAME"],
      "offload": true,
      "csvExportOptions":
       {
           "selectQuery": "SELECT_QUERY",
           "escapeCharacter":  "5C",
           "quoteCharacter": "22",
           "fieldsTerminatedBy": "2C",
           "linesTerminatedBy": "0A"
       }
   }
}

L'esportazione in CSV crea un output CSV standard per impostazione predefinita. Se hai bisogno di ancora più opzioni di quelle fornite da Cloud SQL, puoi utilizzare la seguente istruzione in un client psql:

      \copy [table_name] TO '[csv_file_name].csv' WITH
          (FORMAT csv, ESCAPE '[escape_character]', QUOTE '[quote_character]',
          DELIMITER '[delimiter_character]', ENCODING 'UTF8', NULL '[null_marker_string]');

Importa i dati in Cloud SQL per PostgreSQL

Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per PostgreSQL

Per importare i dati da Cloud Storage in Cloud SQL, l'utente che avvia l'importazione deve avere uno dei seguenti ruoli:

Inoltre, il account di servizio dell'istanza Cloud SQL deve avere uno dei seguenti ruoli:

  • Il ruolo IAM storage.objectAdmin
  • Un ruolo personalizzato, incluse le seguenti autorizzazioni:
    • storage.objects.get
    • storage.objects.list (solo per l'importazione di file in parallelo)

Per assistenza con i ruoli IAM, consulta Identity and Access Management.

Importa i dati da un file CSV in Cloud SQL per PostgreSQL

Requisiti per il formato file CSV

I file CSV devono avere una riga per ogni riga di dati e utilizzare campi separati da virgole.

Per importare i dati in un'istanza Cloud SQL utilizzando un file CSV:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Importa.
  4. Nella sezione Formato file, seleziona CSV.
  5. Nella sezione Seleziona file di origine, inserisci il percorso del bucket e del file CSV o carica un file CSV locale da utilizzare per l'importazione. Per sfogliare il file:
    1. Fai clic su Sfoglia
    2. Nella sezione Posizione, fai doppio clic sul nome del bucket nell'elenco.
    3. Seleziona il file nell'elenco.
    4. Fai clic su Seleziona.

    Puoi importare un file compresso (.gz) o non compresso (.csv).

  6. Nella sezione Destinazione, specifica il Database e la Tabella nella tua istanza Cloud SQL in cui vuoi importare il file CSV.
  7. Se vuoi, puoi specificare un utente per l'operazione di importazione.
  8. Fai clic su Importa per avviare l'importazione.

gcloud

  1. Crea un bucket Cloud Storage.
  2. Carica il file nel bucket.

    Per assistenza sul caricamento di file nei bucket, consulta Caricamento di oggetti.

  3. Carica i dati dal file CSV nel bucket.
  4. Identifica il account di servizio per l'istanza Cloud SQL da cui stai eseguendo l'esportazione. Per farlo, esegui il comando gcloud sql instances describe con il nome dell'istanza. Cerca il campo serviceAccountEmailAddress nell'output.
    gcloud sql instances describe INSTANCE_NAME
  5. Copia il campo serviceAccountEmailAddress.
  6. Utilizza gcloud storage buckets add-iam-policy-binding per concedere il ruolo IAM storage.objectAdmin al account di servizio dell'istanza Cloud SQL per il bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  7. Importa il file:
    gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME \
    --table=TABLE_NAME

    Per informazioni sull'utilizzo del comando import csv, consulta la pagina di riferimento del comando sql import csv.

  8. Se non hai bisogno di conservare le autorizzazioni IAM impostate in precedenza, rimuovile utilizzando gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un bucket Cloud Storage.
  2. Carica il file nel bucket.

    Per assistenza sul caricamento di file nei bucket, consulta Caricamento di oggetti.

  3. Fornisci alla tua istanza i ruoli IAM storage.objectAdmin e objectViewer per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa il file:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • project-id: l'ID progetto
    • instance-id: l'ID istanza
    • bucket_name: il nome del bucket Cloud Storage
    • path_to_csv_file: il percorso del file CSV
    • database_name: il nome di un database all'interno dell'istanza Cloud SQL
    • table_name: Il nome della tabella del database
    • escape_character: il carattere che deve essere visualizzato prima di un carattere di dati che deve essere sottoposto a escape. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • quote_character: il carattere che racchiude i valori delle colonne con un tipo di dati stringa. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • fields_terminated_by: il carattere che divide i valori delle colonne. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "2C" rappresenta una virgola. (facoltativo)
    • lines_terminated_by: il carattere che suddivide i record di riga. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, "0A" rappresenta una nuova riga. (facoltativo)

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
     "importContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "database": "database_name",
          "csvImportOptions":
           {
             "table": "table_name",
             "escapeCharacter": "escape_character",
             "quoteCharacter": "quote_character",
             "fieldsTerminatedBy": "fields_terminated_by",
             "linesTerminatedBy": "lines_terminated_by"
           }
       }
    }
    
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:import.
  5. Se non hai bisogno di conservare le autorizzazioni IAM impostate in precedenza, rimuovile.

REST v1beta4

  1. Crea un bucket Cloud Storage.
  2. Carica il file nel bucket.

    Per assistenza sul caricamento di file nei bucket, consulta Caricamento di oggetti.

  3. Fornisci alla tua istanza il storage.objectAdmin ruolo IAM per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa il file:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • project-id: l'ID progetto
    • instance-id: l'ID istanza
    • bucket_name: il nome del bucket Cloud Storage
    • path_to_csv_file: il percorso del file CSV
    • database_name: il nome di un database all'interno dell'istanza Cloud SQL
    • table_name: Il nome della tabella del database
    • escape_character: il carattere che deve apparire prima di un carattere di dati di cui deve essere eseguito l'escape. Il valore di questo argomento deve essere in formato esadecimale ASCII. Ad esempio,"22" rappresenta le virgolette doppie. (facoltativo)
    • quote_character: il carattere che racchiude i valori delle colonne con un tipo di dati stringa. Il valore di questo argomento deve essere nel formato esadecimale ASCII. Ad esempio, "22" rappresenta le virgolette doppie. (facoltativo)
    • fields_terminated_by: il carattere che divide i valori delle colonne. Il valore di questo argomento deve essere nel formato esadecimale ASCII. Ad esempio, "2C" rappresenta una virgola. (facoltativo)
    • lines_terminated_by: Il carattere che divide i record di riga. Il valore di questo argomento deve essere nel formato esadecimale ASCII. Ad esempio, "0A" rappresenta una nuova riga. (facoltativo)

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
     "importContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "database": "database_name",
          "csvImportOptions":
           {
             "table": "table_name",
             "escapeCharacter": "escape_character",
             "quoteCharacter": "quote_character",
             "fieldsTerminatedBy": "fields_terminated_by",
             "linesTerminatedBy": "lines_terminated_by"
           }
       }
    }
    
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:import.
  5. Se non hai bisogno di conservare le autorizzazioni IAM impostate in precedenza, rimuovile.

Personalizza il formato di un file CSV per Cloud SQL per PostgreSQL

Puoi utilizzare gcloud o l'API REST per personalizzare il formato file CSV.

Di seguito è riportato un comando gcloud di esempio:

gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
--database=DATABASE_NAME \
--table=TABLE_NAME \
--quote="22" \
--escape="5C" \
--fields-terminated-by="2C" \
--lines-terminated-by="0A"

Il corpo della richiesta dell'API REST equivalente sarà simile al seguente:

{
 "importContext":
   {
      "fileType": "CSV",
      "uri": "gs://bucket_name/path_to_csv_file",
      "database": ["DATABASE_NAME"],
      "csvImportOptions":
       {
           "table": "TABLE_NAME",
           "escapeCharacter":  "5C",
           "quoteCharacter": "22",
           "fieldsTerminatedBy": "2C",
           "linesTerminatedBy": "0A"
       }
   }
}

Se ricevi un errore come ERROR_RDBMS, assicurati che la tabella esista. Se la tabella esiste, verifica di disporre delle autorizzazioni corrette per il bucket. Per assistenza sulla configurazione controllo dell'accesso in Cloud Storage, consulta Crea e gestisci gli elenchi di controllo dell'accesso.

Per vedere come viene creata la richiesta API REST sottostante per questa attività, consulta Explorer API nella pagina instances:import.

Passaggi successivi