Importazione di un file CSV

Per caricare dati tabulari in una tabella di database esistente, puoi importare un file CSV archiviato in un bucket Cloud Storage in un cluster AlloyDB per PostgreSQL.

Puoi annullare l'importazione dei dati nei cluster AlloyDB. Per saperne di più, consulta Annulla un'operazione di importazione.

Prima di iniziare

Prima di iniziare un'operazione di importazione:

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

Ruoli e autorizzazioni richiesti per l'importazione nei cluster AlloyDB

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

Inoltre, il account di servizio del cluster AlloyDB deve avere uno dei seguenti ruoli:

  • Il ruolo IAM storage.objectViewer
  • Un ruolo personalizzato, incluse le seguenti autorizzazioni:
    • storage.objects.get

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

Importa i dati da un file CSV nei cluster AlloyDB

  • Il database e la tabella in cui stai eseguendo l'importazione devono esistere nel tuo cluster AlloyDB. Per assistenza sulla creazione di un database, consulta Crea un database.
  • I file CSV devono avere una riga per ogni riga di dati e utilizzare campi separati da virgole.
  • I file CSV non devono contenere una riga di intestazione. Se il file CSV contiene una riga di intestazione, rimuovila prima di importarlo.

Per importare i dati in un cluster AlloyDB utilizzando un file CSV, segui questi passaggi:

Console

  1. Nella console Google Cloud , vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic sul nome di un cluster per aprire la pagina Panoramica del cluster.

  3. Fai clic su Importa.

  4. In Formato file, seleziona CSV.

  5. In Seleziona file di origine, scegli se caricare i file dal computer o selezionare un file da una posizione di Cloud Storage.

    1. Per caricare un file dal computer:

      1. Seleziona Carica file dal tuo computer.
      2. Fai clic su Sfoglia accanto a Seleziona file locale per selezionare un file CSV dalla tua macchina locale.
      3. Fai clic su Sfoglia accanto a Seleziona la località di Cloud Storage per selezionare una località di Cloud Storage in cui archiviare il file locale caricato.
      4. Fai clic su Carica per caricare il file.
    2. Per selezionare un file CSV presente in un bucket Cloud Storage, segui questi passaggi:

      1. Seleziona Seleziona il file da Google Cloud Storage.
      2. Fai clic su Sfoglia accanto a bucket-name/file-name per selezionare un file CSV da un bucket Cloud Storage.
  6. Seleziona il database in cui vuoi importare i dati dal menu a discesa Database.

  7. Seleziona la tabella all'interno del database dal menu a discesa Tabella.

  8. (Facoltativo) Per specificare un utente per l'operazione di importazione, fai clic su Mostra opzioni utente e inserisci il nome utente nel campo Utente.

  9. Per avviare l'operazione di importazione, fai clic su Importa.

gcloud

  1. Crea un bucket Cloud Storage.
  2. Carica il file CSV nel tuo bucket. Per assistenza sul caricamento di file nei bucket, consulta Caricamento di oggetti.
  3. Utilizza gcloud storage buckets add-iam-policy-binding per concedere il ruolo IAM storage.objectViewer al account di servizio AlloyDB per il bucket:

     service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.

  4. Importa il file:

    gcloud alloydb clusters import CLUSTER_NAME \
      --region=REGION \
      --gcs-uri=gs://BUCKET_NAME/FILE_NAME \
      --database=DATABASE_NAME \
      --user=USER \
      --csv \
      --table=TABLE_NAME

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • REGION: la regione in cui è stato eseguito il deployment del cluster AlloyDB.
    • BUCKET_NAME: il nome del bucket Cloud Storage.
    • FILE_NAME: il nome del file CSV.
    • DATABASE_NAME: il nome di un database all'interno del cluster.
    • USER: l'utente per l'operazione di importazione.
    • TABLE_NAME: la tabella all'interno del database.

    Per saperne di più sull'utilizzo del comando import, consulta la pagina di riferimento del comando gcloud alloydb clusters import.

  5. 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 CSV nel tuo bucket. Per assistenza sul caricamento di file nei bucket, consulta Caricamento di oggetti.
  3. Utilizza gcloud storage buckets add-iam-policy-binding per concedere il ruolo IAM storage.objectViewer al account di servizio del cluster AlloyDB per il bucket. Il formato del account di servizio è il seguente:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.

  4. Importa il file.

    Utilizza il seguente metodo HTTP e URL:

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

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

    • PROJECT_ID: l'ID progetto
    • LOCATION_ID: la regione in cui è stato eseguito il deployment del cluster AlloyDB.
    • CLUSTER_ID: l'ID cluster.
    • BUCKET_NAME: il nome del bucket Cloud Storage.
    • PATH_TO_CSV_FILE: il percorso del file CSV.
    • USER: l'utente per l'operazione di importazione.
    • DATABASE_NAME: il nome di un database all'interno del cluster AlloyDB.
    • TABLE_NAME: la tabella all'interno del database.
    • COLUMNS (facoltativo): le colonne da importare.
    • ESCAPE_CHARACTER (facoltativo): 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 un carattere nel codice ASCII esadecimale. Ad esempio, 22 rappresenta le virgolette doppie.
    • QUOTE_CHARACTER (facoltativo): il carattere che racchiude i valori delle colonne con un tipo di dati stringa. Il valore di questo argomento deve essere un carattere in codice ASCII esadecimale. Ad esempio, 22 rappresenta le virgolette doppie.
    • FIELD_DELIMITER (facoltativo): il carattere che suddivide i valori delle colonne. Il valore di questo argomento deve essere un carattere nel codice ASCII esadecimale. Ad esempio, 2C rappresenta una virgola.

    Corpo JSON della richiesta:

    {
      "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"
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    curl (Linux, macOS o Cloud Shell)

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

       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)

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

    $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
    

    Ricevi una risposta JSON simile alla seguente:

    Risposta

    {
     "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/CLUSTER_ID",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    
  5. Se non hai bisogno di conservare le autorizzazioni IAM impostate in precedenza, rimuovile.

    Per l'elenco completo dei parametri della richiesta, consulta clusters.import.

Personalizza il formato CSV e importa il file

Puoi personalizzare il formato CSV e importare il file quando il file CSV contiene delimitatori di campo, virgolette o caratteri di escape non predefiniti. Per importare un file CSV con un formato non predefinito, devi fornire le stesse opzioni di formattazione nella richiesta.

Utilizza i seguenti esempi di gcloud CLI e API REST per personalizzare il formato del file CSV.

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 v1

Il corpo della richiesta API REST equivalente è simile al seguente:

{
 "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"
 }
}

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

Se ricevi un errore come INVALID_ARGUMENT, 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.

Controlla lo stato di un'operazione di importazione

Per controllare lo stato di un'operazione di importazione, segui questi passaggi:

gcloud

Esegui questo comando utilizzando gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

Lo stato di queste operazioni si trova nel campo STATUS.

Puoi anche elencare i dettagli di un'operazione specifica o annullarla. Per ulteriori informazioni su questo comando, consulta la pagina di riferimento del comando gcloud alloydb operations.

REST v1

Utilizza il metodo GET e il seguente URL:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

Per saperne di più, consulta get.

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

  • REGION: la regione in cui è stato eseguito il deployment del cluster AlloyDB.
  • PROJECT_ID: l'ID progetto
  • OPERATION_ID: l'ID dell'operazione di importazione. Per saperne di più, consulta Prima di iniziare.

Per inviare la richiesta, espandi una di queste opzioni:

curl (Linux, macOS o Cloud Shell)

Esegui questo comando:

  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)

Esegui questo comando:

$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

In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation.

Passaggi successivi