Importe um ficheiro SQL

Esta página descreve como importar dados de um ficheiro SQL armazenado num contentor do Cloud Storage para um cluster do AlloyDB for PostgreSQL. Os ficheiros SQL são ficheiros de texto simples com uma sequência de comandos SQL.

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 o 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:

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 um ficheiro SQL para clusters do AlloyDB

Para importar dados para um cluster do AlloyDB através de um ficheiro SQL, siga estes passos:

Consola

  1. Aceda à página Clusters.

    Aceda a Clusters

  2. Clique no nome de um cluster para abrir a página Vista geral desse cluster.

  3. Clique em Importar.

  4. Em Selecionar ficheiro de origem, procure no Cloud Storage e selecione um ficheiro SQL de um contentor ou carregue um ficheiro SQL do seu computador local para usar na importação.

  5. Selecione a base de dados para a qual quer importar os dados.

    Isto faz com que o AlloyDB execute a declaração USE DATABASE antes da importação. Se o ficheiro de descarga de SQL incluir uma declaração USE DATABASE, substitui a base de dados que definiu na Google Cloud consola.

  6. Opcional: especifique um utilizador para a operação de importação. Se o seu ficheiro de importação contiver declarações que têm de ser realizadas por um utilizador específico, use este campo para especificar esse utilizador.

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

gcloud

  1. Crie um contentor do Cloud Storage.
  2. Carregue o ficheiro SQL para o seu contentor. Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

  3. Use o comando 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:

    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 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 obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.

  4. Importe o ficheiro:

    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 devolver um erro como PERMISSION_DENIED, reveja as autorizações.

    Para obter informações sobre a utilização do comando import, consulte a página de referência do comando alloydb import.

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

  1. Crie um contentor do Cloud Storage.
  2. Carregue o ficheiro SQL para o seu contentor. Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
  3. 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
  4. 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.

  5. Importe o ficheiro SQL.

    Use o seguinte método HTTP e URL:

    POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/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_SQL_FILE: o caminho para o ficheiro SQL.
    • USER: o utilizador a usar para a importação.
    • DATABASE_NAME: o nome de uma base de dados no cluster do AlloyDB.

    Corpo JSON do pedido:

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

    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": "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 utilizador diferente para a importação, especifique a propriedade do utilizador.

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

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

gcloud alloydb operations describe OPERATION_ID --region=REGION

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?