Importar um arquivo CSV

Para carregar dados tabulares em uma tabela de banco de dados, importe um arquivo CSV armazenado em um bucket do Cloud Storage para um cluster do AlloyDB para PostgreSQL.

É possível cancelar a importação de dados para clusters do AlloyDB. Para mais informações, consulte Cancelar uma operação de importação.

Antes de começar

Antes de iniciar uma operação de importação:

  • Verifique se o banco de dados tem espaço livre adequado.
  • As operações de importação usam recursos do banco de dados, mas não interferem nas operações normais do banco de dados, a menos que o cluster tenha um provisionamento menor do que deveria ser.

Papéis e permissões necessários para importar para clusters do AlloyDB

Para importar dados do Cloud Storage para o AlloyDB, o usuário que inicia a importação precisa ter um dos seguintes papéis:

Além disso, a conta de serviço do cluster do AlloyDB precisa ter um dos seguintes papéis:

  • O papel storage.objectViewer do IAM
  • Um papel personalizado, incluindo as seguintes permissões:
    • storage.objects.get

Para receber ajuda com os papéis do IAM, consulte Identity and Access Management.

Importar dados de um arquivo CSV para clusters do AlloyDB

  • O banco de dados e a tabela em que você está importando precisam existir no cluster do AlloyDB. Para ajuda sobre a criação de um banco de dados, consulte Criar um banco de dados.
  • Os arquivos CSV precisam ter uma linha para cada linha de dados e usar campos separados por vírgula.
  • Os arquivos CSV não podem conter uma linha de cabeçalho. Se o arquivo CSV tiver uma linha de cabeçalho, remova-a antes de importar.

Para importar dados para um cluster do AlloyDB usando um arquivo CSV, siga estas etapas:

Console

  1. No Google Cloud console, acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome de um cluster para abrir a página Visão geral dele.

  3. Clique em Importar.

  4. Em Formato do arquivo, selecione CSV.

  5. Em Selecionar arquivo de origem, escolha se quer fazer upload de arquivos do seu computador ou selecionar um arquivo de um local do Cloud Storage.

    1. Para fazer upload de um arquivo do seu computador, faça o seguinte:

      1. Selecione Fazer upload de arquivos do computador.
      2. Clique em Procurar ao lado de Selecionar arquivo local para escolher um arquivo CSV na sua máquina local.
      3. Clique em Procurar ao lado de Selecionar local do Cloud Storage para escolher um local do Cloud Storage onde armazenar o arquivo local enviado.
      4. Clique em Fazer upload para enviar o arquivo.
    2. Para selecionar um arquivo CSV que existe em um bucket do Cloud Storage, faça o seguinte:

      1. Selecione Selecionar arquivo do Google Cloud Storage.
      2. Clique em Procurar ao lado de bucket-name/file-name para selecionar um arquivo CSV de um bucket do Cloud Storage.
  6. Selecione o banco de dados em que os dados serão importados no menu suspenso Banco de dados.

  7. Selecione a tabela no banco de dados no menu suspenso Tabela.

  8. Opcional: para especificar um usuário para a operação de importação, clique em Mostrar opções do usuário e insira o nome de usuário no campo Usuário.

  9. Para iniciar a operação de importação, clique em Importar.

gcloud

  1. Crie um bucket do Cloud Storage.
  2. Faça upload do arquivo CSV para o bucket. Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
  3. Use gcloud storage buckets add-iam-policy-binding para conceder o papel do IAM storage.objectViewer à conta de serviço do AlloyDB para o bucket:

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

    Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.

  4. Importe o arquivo:

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

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • REGION: a região em que o cluster do AlloyDB está implantado.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • FILE_NAME: o nome do arquivo CSV.
    • DATABASE_NAME: o nome de um banco de dados dentro do cluster.
    • USER: o usuário da operação de importação.
    • TABLE_NAME: a tabela dentro do banco de dados.

    Para mais informações sobre como usar o comando import, consulte a página de referência do comando gcloud alloydb clusters import.

  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as usando gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crie um bucket do Cloud Storage.
  2. Faça upload do arquivo CSV para o bucket. Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
  3. Use gcloud storage buckets add-iam-policy-binding para conceder o papel do IAM storage.objectViewer à conta de serviço do cluster do AlloyDB para o bucket. O formato da conta de serviço é o seguinte:

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

    Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.

  4. Importe o arquivo.

    Use o seguinte método HTTP e URL:

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

    Antes de usar os dados da solicitação, faça as seguintes substituições:

    • PROJECT_ID: o ID do projeto;
    • LOCATION_ID: a região em que o cluster do AlloyDB está implantado.
    • CLUSTER_ID: o ID do cluster.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • PATH_TO_CSV_FILE: o caminho para o arquivo CSV.
    • USER: o usuário da operação de importação.
    • DATABASE_NAME: o nome de um banco de dados dentro do cluster do AlloyDB.
    • TABLE_NAME: a tabela dentro do banco de dados.
    • COLUMNS (opcional): as colunas a serem importadas.
    • ESCAPE_CHARACTER (opcional): o caractere que precisa aparecer antes de um caractere de dados que precisa de escape. O valor desse argumento precisa ser um caractere no código ASCII hexadecimal. Por exemplo, 22 representa aspas duplas.
    • QUOTE_CHARACTER (opcional): o caractere que inclui valores de colunas com um tipo de dados de string. O valor desse argumento precisa ser um caractere no código ASCII hexadecimal. Por exemplo, 22 representa aspas duplas.
    • FIELD_DELIMITER (opcional): o caractere que divide os valores da coluna. O valor desse argumento precisa ser um caractere no código ASCII hexadecimal. Por exemplo, 2C representa uma vírgula.

    Corpo JSON da solicitação:

    {
      "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 a solicitação, expanda uma destas opções:

    curl (Linux, macOS ou Cloud Shell)

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

       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)

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $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
    

    Você vai receber uma resposta JSON semelhante a esta:

    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/CLUSTER_ID",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    
  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

    Para ver a lista completa de parâmetros da solicitação, consulte clusters.import.

Personalizar o formato CSV e importar o arquivo

É possível personalizar o formato CSV e importar o arquivo quando ele contém delimitador de campo não padrão ou caracteres de aspas ou caractere de escape. Para importar um arquivo CSV com um formato não padrão, é necessário fornecer as mesmas opções de formatação na solicitação.

Use os exemplos da CLI gcloud e da API REST a seguir para personalizar o formato do arquivo 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 da solicitação de API REST equivalente é semelhante a este:

{
 "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 a solicitação de API REST subjacente é criada nesta tarefa, consulte o APIs Explorer na página clusters.import.

Se você receber um erro como INVALID_ARGUMENT, verifique se a tabela existe. Se a tabela existir, confirme se você tem as permissões corretas no bucket. Para receber ajuda para configurar o controle de acesso no Cloud Storage, consulte Criar e gerenciar listas de controle de acesso.

Verificar o status de uma operação de importação

Para verificar o status de uma operação de importação, siga estas etapas:

gcloud

Execute o seguinte comando usando o comando gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

O status dessas operações está no campo STATUS.

Também é possível listar detalhes de uma operação específica ou cancelar uma operação específica. Para mais informações sobre esse comando, consulte a página de referência do comando gcloud alloydb operations.

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 ver mais informações, consulte get.

Antes de usar os dados da solicitação, faça as seguintes substituições:

  • REGION: a região em que o cluster do AlloyDB está implantado.
  • PROJECT_ID: o ID do projeto;
  • OPERATION_ID: o ID da operação de importação. Para mais informações, consulte Antes de começar.

Para enviar a solicitação, 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

Se funcionar, o corpo da resposta vai ter uma instância de Operation.

A seguir