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

Para importar dados do Cloud Storage, a conta de serviço da instância precisa ter o papel do IAM legacyBucketReader definido no projeto. Para mais informações, consulte Cloud Identity and Access Management para Cloud Storage.

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

Antes de começar

  • Para este procedimento, é necessário importar um arquivo do Cloud Storage. Para importar dados do Cloud Storage, a conta de serviço da instância do Cloud SQL ou o usuário precisa ter o papel do IAM Storage Object Admin (storage.objectAdmin) definido. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para o Cloud Storage.

    É possível encontrar o nome da conta de serviço da instância na página Visão geral da instância no Console do Google Cloud. É possível verificar os papéis do bucket do Cloud Storage usando a ferramenta gsutil:

    gsutil iam get gs://[BUCKET_NAME]

    Saiba mais sobre como usar o IAM com buckets.

  • Crie um arquivo dump SQL. Use as instruções do marcador abaixo que se aplicam à sua situação. Essas instruções definem certas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.

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

Como importar dados de um arquivo dump SQL no Cloud Storage

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

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acessar a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página Visão geral correspondente.
  3. Clique em Importar na barra de botões.
  4. Em 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 navegue até o arquivo:
    1. Clique em Pesquisar.
    2. Em 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 do Storage.

  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 v1beta4

    Crie um arquivo dump SQL. Use as instruções do marcador abaixo que se aplicam à sua situação. Essas instruções definem certas 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 do Storage.

  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://www.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 APIs Explorer na página instances:import.

Como importar dados de arquivos CSV para o Cloud SQL

Antes de começar

  • Para este procedimento, é necessário importar um arquivo do Cloud Storage. Para importar dados do Cloud Storage, a conta de serviço da instância do Cloud SQL ou o usuário precisa ter o papel do IAM Storage Object Admin (storage.objectAdmin) definido. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para o Cloud Storage.

    É possível encontrar o nome da conta de serviço da instância na página Visão geral da instância no Console do Google Cloud. É possível verificar os papéis do bucket do Cloud Storage usando a ferramenta gsutil:

    gsutil iam get gs://[BUCKET_NAME]

    Saiba mais sobre como usar o IAM com buckets.

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

Como importar dados de um arquivo CSV no Cloud Storage

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

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acessar a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página Visão geral correspondente.
  3. Clique em Importar na barra de botões.
  4. Em Escolha o arquivo do qual você quer importar dados, insira o caminho para o bucket e o arquivo CSV para a importação. Ou navegue até o arquivo:
    1. Clique em Pesquisar.
    2. Em 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. Em 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 do Storage.

  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 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 do Storage.

  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://www.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 APIs Explorer 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 (ambos em inglês) sobre pg_restore.

pg_restore -h [CLOUD_SQL_INSTANCE_IP] -U [USERNAME] --format=plain --no-owner --no-acl -d [DATABASE_NAME] [SQL_FILE].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.

A seguir