Esta página descreve como importar dados de um ficheiro CSV armazenado num contentor do Cloud Storage para um cluster do AlloyDB for PostgreSQL.
Pode cancelar a importação de dados para clusters do AlloyDB. Para mais informações, consulte o artigo Cancele uma operação de importação.
Antes de começar
Antes de iniciar uma operação de importação:
- Certifique-se de que a sua base de dados tem espaço livre adequado.
- As operações de importação usam recursos da base de dados, mas não interferem com as operações normais da base de dados, a menos que o cluster tenha recursos insuficientes.
Funções e autorizações necessárias para a importação para clusters do AlloyDB
Para importar dados do Cloud Storage para o AlloyDB, o utilizador que inicia a importação tem de ter uma das seguintes funções:
- A função AlloyDB Admin
- Uma função personalizada,
incluindo as seguintes autorizações:
alloydb.clusters.get
alloydb.clusters.import
Além disso, a conta de serviço do cluster do AlloyDB tem de ter uma das seguintes funções:
- A função de IAM
storage.objectViewer
- Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.get
Para obter ajuda com as funções de IAM, consulte o artigo Gestão de identidade e de acesso.
Importe dados de um ficheiro CSV para clusters do AlloyDB
- A base de dados e a tabela para as quais está a importar têm de existir no cluster do AlloyDB. Para obter ajuda na criação de uma base de dados, consulte o artigo Crie uma base de dados.
- Os ficheiros CSV têm de ter uma linha para cada linha de dados e usar campos separados por vírgulas.
Para importar dados para um cluster do AlloyDB através de um ficheiro CSV, siga estes passos:
gcloud
- Crie um contentor do Cloud Storage.
- Carregue o ficheiro CSV para o seu contentor. Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
Use o comando gcloud storage buckets add-iam-policy-binding para conceder a
storage.objectViewer
função do IAM à conta de serviço do AlloyDB para o contentor.service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
Importe o ficheiro:
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --gcs-uri=gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --user=USER --csv --table=TABLE_NAME
Faça as seguintes substituições:
- CLUSTER_NAME: o nome do cluster.
- REGION: a região na qual o cluster do AlloyDB está implementado.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- FILE_NAME: o nome do ficheiro CSV.
- DATABASE_NAME: o nome de uma base de dados no cluster.
- USER: o utilizador para a operação de importação.
- TABLE_NAME: a tabela na base de dados.
Para mais informações sobre a utilização do comando
import
, consulte a página de referência do comandoalloydb import
.Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as através do comando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crie um contentor do Cloud Storage.
- Carregue o ficheiro CSV para o seu contentor. Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
Conceda autorizações da conta de serviço ao contentor do Cloud Storage para a operação de importação. Use o formato de conta de serviço para identificar a conta de serviço do projeto para o qual está a fazer a importação. O formato da conta de serviço é o seguinte:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Use gcloud storage buckets add-iam-policy-binding para conceder a
storage.objectViewer
função do IAM à conta de serviço do cluster do AlloyDB para o contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.Importe o ficheiro.
Use o seguinte método HTTP e URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:import
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- LOCATION_ID: a região na qual o cluster do AlloyDB está implementado.
- CLUSTER_ID: o ID do cluster.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_CSV_FILE: o caminho para o ficheiro CSV.
- USER: o utilizador para a operação de importação.
- DATABASE_NAME: o nome de uma base de dados no cluster do AlloyDB.
- TABLE_NAME: a tabela na base de dados.
- COLUMNS (Opcional): as colunas a importar.
- ESCAPE_CHARACTER (Opcional): o caráter que tem de aparecer antes de um caráter de dados que tem de ser ignorado. O valor
deste argumento tem de ser um caráter no código ASCII hexadecimal. Por exemplo,
22
representa uma aspa dupla. - QUOTE_CHARACTER (Opcional): o caráter que inclui valores de colunas com um tipo de dados de string.
O valor deste argumento tem de ser um carater no código ASCII hexadecimal.
Por exemplo,
22
representa uma marca de aspas duplas. - FIELD_DELIMITER (Opcional): o caráter que divide os valores das colunas. O valor deste argumento tem de ser um caráter no código ASCII hexadecimal. Por exemplo,
2C
representa uma vírgula.
Corpo JSON do pedido:
{ "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" } }
Para enviar o seu pedido, expanda uma destas opções:
curl (Linux, macOS ou Cloud Shell)
Guarde o corpo do pedido num ficheiro com o nome
request.json
e execute o seguinte 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)
Guarde o corpo do pedido num ficheiro com o nome
request.json
e execute o seguinte 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
Recebe uma resposta JSON semelhante à seguinte:
Resposta
{ "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 não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.
Para ver a lista completa de parâmetros do pedido, consulte
clusters:import
.
Personalize o formato CSV e importe o ficheiro
Pode personalizar o formato CSV e importar o ficheiro quando o ficheiro CSV contém um delimitador de campo, ou carateres de aspas ou de escape não predefinidos. Para importar um ficheiro CSV com um formato não predefinido, tem de fornecer as mesmas opções de formatação no pedido.
Use os seguintes exemplos da CLI gcloud e da API REST para ajudar a personalizar o formato do ficheiro 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
O corpo do pedido da API REST equivalente é semelhante ao seguinte:
{
"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",
}
}
Para ver como o pedido da API REST subjacente é construído para esta tarefa, consulte o Explorador de APIs na página clusters:import
.
Se receber um erro como INVALID_ARGUMENT
, certifique-se de que a tabela existe. Se a tabela existir, confirme que tem as autorizações corretas no contentor.
Para obter ajuda na configuração do controlo de acesso no Cloud Storage, consulte o artigo
Criar e gerir listas de controlo de acesso.
Verifique o estado de uma operação de importação
Para verificar o estado de uma operação de importação, siga estes passos:
gcloud
Execute o seguinte comando com gcloud alloydb operations describe:
gcloud alloydb operations describe OPERATION_ID --region=REGION
O estado destas operações encontra-se no campo STATUS
.
Também pode listar os detalhes de uma operação específica ou cancelar uma operação específica. Para mais informações sobre este comando, consulte a
gcloud alloydb operations
página de referência de comandos.
REST v1
Use o método GET
e o seguinte URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Para mais informações, consulte get
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- REGION: a região na qual o cluster do AlloyDB está implementado.
- PROJECT_ID: o ID do projeto.
- OPERATION_ID: o ID da operação de importação. Para mais informações, consulte a secção Antes de começar.
Para enviar o seu pedido, expanda uma destas opções:
curl (Linux, macOS ou Cloud Shell)
Execute o seguinte 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)
Execute o seguinte 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
Recebe uma resposta JSON semelhante à seguinte:
Se for bem-sucedido, o corpo da resposta contém uma instância de Operation.
O que se segue?
- Saiba como importar um ficheiro SQL.
- Saiba como cancelar uma operação de importação.