Importar dados para o Cloud SQL

Nesta página, descrevemos como importar dados para instâncias do Cloud SQL. É possível importar dados de arquivos dump SQL ou CSV.

Clique no link a seguir e conheça as Práticas recomendadas para importar e exportar dados.

Depois de concluir uma operação de importação, verifique os resultados.

Antes de começar

Papéis e permissões necessárias

Para este procedimento, é necessário importar um arquivo do Cloud Storage. Para importar dados do Cloud Storage, a conta de serviço ou o usuário precisa ter um dos seguintes conjuntos de papéis:

  • Os papéis de Administrador do Cloud SQL e roles/storage.legacyObjectReader
  • Um papel personalizado, incluindo as seguintes permissões:
    • cloudsql.instances.get
    • cloudsql.instances.import
    • storage.buckets.get
    • storage.objects.get

Se a conta ou o usuário também estiver executando operações de exportação, talvez seja mais conveniente conceder o papel Storage Object Admin do IAM para ter todas as permissões necessárias para importação e exportação. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para o Cloud Storage.

Como importar dados de um arquivo dump SQL para o Cloud SQ

  • Crie um arquivo dump SQL. As instruções vinculadas definem determinadas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.

  • O banco de dados em que você está importando já precisa existir na instância do Cloud SQL. Para ajuda sobre a criação de um banco de dados, consulte Como criar um banco de dados.
  • Antes de importar um arquivo de dump SQL, garanta que todos os usuários que têm objetos ou receberam permissões nos objetos no banco de dados despejado existam no novo banco de dados. Caso contrário, a importação não recriará os objetos com a propriedade e/ou as permissões originais. Às vezes, é isso que você quer, mas geralmente não é.

    Para ajudar na criação de usuários, consulte Como criar usuários.

Para importar dados de um arquivo dump SQL para uma instância do Cloud SQL:

Console

  1. No Console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Clique no nome da instância para abrir a página Visão geral correspondente.
  3. Clique em Importar.
  4. Na seção Escolha o arquivo do qual você quer importar dados, insira o caminho para o bucket e o arquivo dump SQL que será usado para a importação. Ou acesse o arquivo:
    1. Clique em Browse.
    2. Na seção Local, clique duas vezes no nome do bucket na lista.
    3. Selecione o arquivo na lista.
    4. Clique em Selecionar.

    É possível importar um arquivo compactado (.gz) ou descompactado (.sql).

  5. Em Formato, selecione SQL.
  6. Selecione o banco de dados que receberá os dados importados.

    Isso faz com que o Cloud SQL execute a instrução USE DATABASE antes da importação.

  7. Se você quiser especificar um usuário do PostgreSQL para realizar a importação, selecione o usuário.

    Se o arquivo de importação contiver instruções que precisem ser realizadas por um usuário específico do PostgreSQL, use este campo para especificar esse usuário.

  8. Clique em Importar para iniciar a importação.

gcloud

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Descreva a instância para a qual está fazendo a importação:
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copie o campo serviceAccountEmailAddress.
  5. Use gsutil iam para conceder o papel do IAM storage.objectAdminà conta de serviço do bucket.
      gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \
      gs://BUCKET-NAME
      
    Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  6. Importe o banco de dados:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME
    

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

    Se o comando retornar um erro como "ERROR_RDBMS", analise as permissões. Esse erro costuma surgir de problemas de permissões.

  7. Se não for necessário manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

    Crie um arquivo dump SQL. As instruções vinculadas definem determinadas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância os papéis do IAM legacyBucketWriter e objectViewer do seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  4. Importe seu arquivo dump:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_sql_file: o caminho para o arquivo SQL
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    Para usar um usuário diferente para a importação, especifique a propriedade importContext.importUser.

    Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  5. Se você não precisa manter as permissões do IAM definidas anteriormente, remova-as agora.

REST v1beta4

    Crie um arquivo dump SQL. As instruções vinculadas definem determinadas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  4. Importe seu arquivo dump:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_sql_file: o caminho para o arquivo SQL
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    Para usar um usuário diferente para a importação, especifique a propriedade importContext.importUser.

    Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  5. Se você não precisa manter as permissões do IAM definidas anteriormente, remova-as agora.
Para ver como a solicitação da API REST subjacente é criada nesta tarefa, consulte o Explorador de APIs na página "instances:import".

Como importar dados de um arquivo CSV para o Cloud SQL

  • O banco de dados e a tabela em que você está importando já precisam existir em sua instância do Cloud SQL. Para ajuda sobre a criação de um banco de dados, consulte Como criar um banco de dados. Para criar uma tabela no banco de dados, use a instrução SQL CREATE TABLE (em inglês) no cliente psql.
  • O arquivo CSV precisa estar de acordo com os requisitos de formato do arquivo CSV abaixo.

Requisitos de formato do arquivo CSV

Os arquivos CSV precisam ter uma linha para cada linha de dados e usar campos separados por vírgula.

Para ver instruções de exportação para um arquivo CSV formatado para o Cloud SQL, consulte Como exportar dados do Cloud SQL para um arquivo CSV.

Para importar dados para uma instância do Cloud SQL usando um arquivo CSV:

Console

  1. No Console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Clique no nome da instância para abrir a página Visão geral correspondente.
  3. Clique em Importar.
  4. Na seção Escolha o arquivo do qual você quer importar dados, insira o caminho para o bucket e o arquivo CSV para a importação. Ou acesse o arquivo:
    1. Clique em Browse.
    2. Na seção Local, clique duas vezes no nome do bucket na lista.
    3. Selecione o arquivo na lista.
    4. Clique em Selecionar.

    É possível importar um arquivo compactado (.gz) ou descompactado (.csv).

  5. Na seção Formato, selecione CSV.
  6. Especifique o Banco de dados e a Tabela na instância do Cloud SQL em que você quer importar o arquivo CSV.
  7. Você pode, opcionalmente, especificar um usuário para usar na importação.
  8. Clique em Importar para iniciar a importação.

gcloud

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Faça upload dos dados do arquivo CSV para o bucket.
  4. Descreva a instância usada para exportar:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copie o campo serviceAccountEmailAddress.
  6. Use gsutil iam para conceder o papel do IAM storage.objectAdmin à conta de serviço do bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  7. Importe o arquivo:
    gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME \
    --table=TABLE_NAME
    

    Para informações sobre como usar o comando import csv, consulte a página de referência do comando sql import csv.

  8. Se não for necessário manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância os papéis do IAM legacyBucketWriter e objectViewer do seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  4. Importe o arquivo:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_csv_file: o caminho para o arquivo CSV
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL
    • table_name: o nome da tabela do banco de dados

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "database": "database_name",
          "csvImportOptions":
           {
             "table": "table_name"
           }
       }
    }
    
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

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

    Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  5. Se você não precisar manter as permissões do Cloud IAM definidas anteriormente, remova-as.

REST v1beta4

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  4. Importe dados do arquivo:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_csv_file: o caminho para o arquivo CSV
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL
    • table_name: o nome da tabela do banco de dados

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "database": "database_name",
          "csvImportOptions":
           {
             "table": "table_name"
           }
       }
    }
    
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

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

    Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  5. Se você não precisar manter as permissões do Cloud IAM definidas anteriormente, remova-as.

Se você receber um erro como ERROR_RDBMS, 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.

Para ver como a solicitação da API REST subjacente é criada nesta tarefa, consulte o Explorador de APIs na página "instances:import".

Como importar dados para o Cloud SQL usando pg_restore

Use o utilitário pg_restore para importar um banco de dados para o Cloud SQL. pg_restore só funciona com arquivos criados por pg_dump. Saiba mais sobre pg_restore.

Se o arquivo dump tiver sido criado no formato de texto simples, execute o comando a seguir:

pg_restore -h CLOUD_SQL_INSTANCE_IP -U USERNAME --no-owner --no-acl -d DATABASE_NAME SQL_FILE.sql

Se o arquivo dump tiver sido criado no formato personalizado, execute o seguinte comando:

pg_restore --list  DATABASE_NAME .dmp | sed -E 's/(.* EXTENSION )/; \1/g' >  DATABASE_NAME.toc

Os comentários de pós-processamento sed excluem todas as instruções de extensão do arquivo dump SQL.

Para importar em paralelo, use a sinalização -j NUM_CORES. NUM_CORES é o número de núcleos na instância de origem. Use a mesma sinalização com pg_dump para exportar em paralelo.

Solução de problemas

Problema Solução de problemas
A operação de importação está demorando muito. Muitas conexões ativas podem interferir nas operações de importação.

Feche operações não usadas. Verifique o uso de CPU e da memória da instância do Cloud SQL para garantir que haja muitos recursos disponíveis. A melhor maneira de garantir o máximo de recursos para a importação é reiniciar a instância antes de começar a operação.

Uma reinicialização:

  • fecha todas as conexões;
  • encerra todas as tarefas que possam estar consumindo recursos.
Uma operação de importação pode falhar quando um ou mais usuários referenciados no arquivo dump não existem. Antes de importar um arquivo dump, todos os usuários do banco de dados que têm objetos ou receberam permissões nos objetos no banco de dados despejado precisam existir no banco de dados de destino. Caso contrário, a operação de importação não recriará os objetos com a propriedade ou as permissões originais.

Crie os usuários do banco de dados antes de importar.

A seguir