Questa pagina descrive come importare i dati da 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 ulteriori informazioni, vedi Annullare 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 cluster non sia sottoposto a provisioning 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 disporre di uno dei seguenti ruoli:
- Il ruolo AlloyDB Admin
- Un ruolo personalizzato,
incluse le seguenti autorizzazioni:
alloydb.clusters.get
alloydb.clusters.import
Inoltre, il account di servizio per il cluster AlloyDB deve avere uno dei seguenti ruoli:
- 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.
Importare dati da un file CSV nei cluster AlloyDB
- Il database e la tabella in cui esegui l'importazione devono esistere nel tuo cluster AlloyDB. Per assistenza nella creazione di un database, vedi Creare un database.
- I file CSV devono avere una riga per ogni riga di dati e utilizzare campi separati da virgole.
Per importare dati in un cluster AlloyDB utilizzando un file CSV, segui questi passaggi:
gcloud
- Crea un bucket Cloud Storage.
- Carica il file CSV nel bucket. Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
Utilizza gcloud storage buckets add-iam-policy-binding per concedere il
storage.objectViewer
ruolo IAM al account di servizio AlloyDB per il bucket.service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Per assistenza con la configurazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
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
Effettua le seguenti sostituzioni:
- 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 comandoalloydb import
.Se non hai bisogno di conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile utilizzando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket Cloud Storage.
- Carica il file CSV nel bucket. Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
Concedi al account di servizio le autorizzazioni per il bucket Cloud Storage per l'operazione di importazione. Utilizza il formato del account di servizio per identificare il account di servizio per il progetto in cui stai importando. Il formato del account di servizio è il seguente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Utilizza gcloud storage buckets add-iam-policy-binding per concedere il
storage.objectViewer
ruolo IAM al account di servizio del cluster AlloyDB per il bucket. Per assistenza per l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.Importa il file.
Utilizza il seguente metodo HTTP e URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:import
Prima di utilizzare i dati della richiesta, effettua 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
precedere 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. - 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 nel codice ASCII esadecimale.
Ad esempio,
22
rappresenta le virgolette doppie. - FIELD_DELIMITER (facoltativo): 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.
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/target-cluster", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Se non hai bisogno di conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile ora.
Per l'elenco completo dei parametri per la richiesta, vedi
clusters:import
.
Personalizzare il formato CSV e importare 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 API REST e gcloud CLI 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 nella configurazione del controllo dell'accesso in Cloud Storage, consulta Creazione e gestione degli elenchi di controllo dell'accesso.
Controllare lo stato di un'operazione di importazione
Per controllare lo stato di un'operazione di importazione:
gcloud
Esegui il seguente comando utilizzando gcloud alloydb operations describe:
gcloud alloydb operations describe OPERATION_ID --region=REGION
Lo stato di queste operazioni è indicato 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 ulteriori informazioni, vedi get
.
Prima di utilizzare i dati della richiesta, effettua 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 maggiori informazioni, 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
Ricevi una risposta JSON simile alla seguente:
In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation.
Passaggi successivi
- Scopri come importare un file SQL.
- Scopri come annullare un'operazione di importazione.