Importar um arquivo SQL

Nesta página, descrevemos como importar dados de um arquivo SQL armazenado em um bucket do Cloud Storage para um cluster do AlloyDB para PostgreSQL. Os arquivos SQL são arquivos de texto simples com uma sequência de comandos SQL.

É 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.

Permissões e papéis necessários para importar para o 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 um arquivo SQL para clusters do AlloyDB

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

Console

  1. Acessar 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 Selecionar arquivo de origem, navegue pelo Cloud Storage e selecione um arquivo SQL de um bucket ou faça upload de um arquivo SQL da sua máquina local para usar na importação.

  5. Selecione o banco de dados que receberá os dados importados.

    Isso faz com que o AlloyDB execute a instrução USE DATABASE antes da importação. Se o arquivo dump SQL incluir uma instrução USE DATABASE, ela vai substituir o banco de dados definido no console Google Cloud .

  6. Opcional: especifique um usuário para a operação de importação. Se o arquivo de importação contiver instruções que precisem ser realizadas por um usuário específico, use este campo para especificar esse usuário.

  7. 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 SQL para o bucket. Para 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 storage.objectViewer papel do IAM à conta de serviço do cluster do AlloyDB para o bucket:

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

    Faça as seguintes substituições:

    • CLUSTER_NAME: o nome do cluster.
    • REGION: a região em que o cluster do AlloyDB é 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 no cluster.
    • USER: o usuário da operação de importação.
    • TABLE_NAME: a tabela no banco de dados.

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

  4. Importe o arquivo:

    gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql

    Se o comando retornar um erro como PERMISSION_DENIED, revise as permissões.

    Para informações sobre como usar o comando import, consulte a página de referência do comando alloydb 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 SQL para o bucket. Para ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
  3. Conceda à conta de serviço permissões ao bucket do Cloud Storage para a operação de importação. Use o formato da conta de serviço para identificar a conta de serviço do projeto em que você está importando. O formato da conta de serviço é o seguinte:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
  4. 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. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do IAM.

  5. Importe o arquivo SQL.

    Use o método HTTP e o URL a seguir:

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

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

    • PROJECT_ID: o ID do projeto;
    • LOCATION_ID: a região em que o cluster do AlloyDB é implantado.
    • CLUSTER_ID: o ID do cluster.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • PATH_TO_SQL_FILE: o caminho para o arquivo SQL.
    • USER: o usuário a ser usado para a importação.
    • DATABASE_NAME: o nome de um banco de dados dentro do cluster do AlloyDB.

    Solicitar corpo JSON:

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

    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 chamado request.json e execute o comando a seguir:

       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 chamado 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": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/project-id/locations/location-id/clusters/cluster-id",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

    Para usar um usuário diferente na importação, especifique a propriedade do usuário.

  6. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as agora.

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

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 usando o comando gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

Você também pode listar detalhes 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 substituições a seguir:

  • REGION: a região em que o cluster do AlloyDB é 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

Você vai receber uma resposta JSON semelhante a esta:

Se a solicitação for bem-sucedida, o corpo da resposta vai conter uma instância de Operation.

A seguir