Como exportar dados

Nesta página, você verá como exportar dados de instâncias do Cloud SQL ou de um servidor de banco de dados não gerenciado pelo Cloud SQL.

Para ver as práticas recomendadas para exportação de dados, consulte Práticas recomendadas para importação e exportação de dados.

Como exportar dados do Cloud SQL para um arquivo dump SQL

Ao usar o Cloud SQL para executar uma exportação, seja no Console do Cloud, na ferramenta de linha de comando gcloud ou na API, você estará usando o utilitário pg_dump com as opções necessárias para garantir que o arquivo de exportação resultante seja válido para importação no Cloud SQL.

Também é possível executar pg_dump manualmente usando o cliente psql, caso você esteja exportando para um banco de dados que não é gerenciado pelo Cloud SQL.

Se você pretende importar seus dados para o Cloud SQL, siga as instruções da seção Como exportar dados de um servidor de banco de dados externo para que o arquivo dump SQL seja formatado corretamente para Cloud SQL.

Antes de começar

Neste procedimento, é necessário exportar um arquivo para o Cloud Storage. Para exportar dados para o Cloud Storage, a conta de serviço da instância precisa ter os papéis do IAM storage.objectAdmin definidos no projeto. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para 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 para inspecionar o bucket:

gsutil iam get gs://[BUCKET_NAME]

Saiba mais sobre como usar o IAM com buckets.

Como exportar dados para um arquivo dump SQL no Cloud Storage

Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo dump SQL em um bucket do Cloud Storage, faça o seguinte:

Console

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

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

  2. Clique na instância com os dados que você quer exportar para abrir a página Visão geral correspondente.
  3. Clique em EXPORTAR na barra de botões.
  4. Em Local de exportação do Cloud Storage, adicione o nome do bucket, a pasta e o arquivo que você quer exportar ou clique em Procurar para encontrar ou criar um bucket, uma pasta ou um arquivo.

    Se você clicar em Procurar:

    1. Em Local, selecione uma pasta ou um bucket do Cloud Storage para exportação.
    2. Na caixa de texto Nome, adicione um nome para o arquivo ou, se você criou o arquivo anteriormente, selecione-o na lista em Local.

      É possível usar uma extensão de arquivo .gz para compactar o arquivo de exportação.

    3. Clique em Selecionar.
  5. Em Formato, clique em SQL para criar um arquivo dump SQL.
  6. Em Banco de dados para exportação, use o menu suspenso para selecionar o banco de dados do qual você quer exportar.
  7. Clique em Exportar para iniciar a exportação.
  8. A caixa de diálogo Exportar banco de dados? será aberta com uma mensagem dizendo que o processo de exportação pode levar uma hora ou mais para bancos de dados grandes. Durante a exportação, a única operação que pode ser executada na instância é a visualização de informações. Não será possível interromper a exportação depois que ela for iniciada. Se for um bom momento para iniciar uma exportação, clique em EXPORTAR. Caso contrário, clique em CANCELAR.

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 ajuda sobre o upload de arquivos para buckets, consulte Como fazer o upload de um objeto.

  3. Descreva a instância usada para exportar:
      gcloud sql instances describe [INSTANCE_NAME]
      
  4. Copie o campo serviceAccountEmailAddress.
  5. Use gsutil iam para conceder o papel storage.objectAdmin do IAM à 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.
  6. Exporte o banco de dados:
      gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.sql.gz \
                                  --database=[DATABASE_NAME]
      

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

  7. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.

REST

  1. Crie um bucket para a exportação:
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

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

    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_dump_file: o caminho para o arquivo de despejo 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/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
        }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.
Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:export.

Como exportar dados do Cloud SQL para um arquivo CSV

É possível exportar os dados no formato CSV, que pode ser usado por outras ferramentas e ambientes. As exportações acontecem no nível do banco de dados. Durante uma exportação de CSV, é possível especificar os esquemas que serão exportados. Todos os esquemas no nível do banco de dados estão qualificados para exportação.

Antes de começar

Neste procedimento, é necessário exportar um arquivo para o Cloud Storage. Para exportar dados para o Cloud Storage, a conta de serviço da instância precisa ter os papéis do IAM storage.objectAdmin definidos no projeto. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para 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 para inspecionar o bucket:

gsutil iam get gs://[BUCKET_NAME]

Saiba mais sobre como usar o IAM com buckets.

Como exportar dados para um arquivo CSV no Cloud Storage

Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo dump SQL em um bucket do Cloud Storage, faça o seguinte:

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. Clique na instância para abrir a página Visão geral da instância.
  3. Clique em EXPORTAR na barra de botões.
  4. Em Local de exportação do Cloud Storage, adicione o nome do bucket, a pasta e o arquivo que você quer exportar ou clique em Procurar para encontrar ou criar um bucket, uma pasta ou um arquivo.

    Se você clicar em Procurar:

    1. Em Local, selecione uma pasta ou um bucket do Cloud Storage para exportação.
    2. Na caixa de texto Nome, adicione um nome para o arquivo CSV ou, se você criou o arquivo anteriormente, selecione-o na lista em Local.

      Use uma extensão de arquivo .gz (a extensão completa é .csv.gz) para compactar o arquivo de exportação.

    3. Clique em Selecionar.
  5. Em Formato, clique em CSV.
  6. Em Banco de dados para exportação, selecione o nome do banco de dados no menu suspenso.
  7. Em Consulta SQL, insira uma consulta SQL para especificar a tabela de onde os dados serão exportados.

    Por exemplo, para exportar todo o conteúdo da tabela entries no banco de dados guestbook, insira

    SELECT * FROM guestbook.entries;
    A consulta precisa especificar uma tabela no banco de dados. Não é possível exportar um banco de dados inteiro no formato CSV.

  8. Clique em Exportar para iniciar a exportação.
  9. A caixa de diálogo Exportar banco de dados? será aberta com uma mensagem dizendo que o processo de exportação pode levar uma hora ou mais para bancos de dados grandes. Durante a exportação, a única operação que pode ser executada na instância é a visualização de informações. Não será possível interromper a exportação depois que ela for iniciada. Se for um bom momento para iniciar uma exportação, clique em EXPORTAR. Caso contrário, clique em CANCELAR.

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 ajuda sobre o upload de arquivos para buckets, consulte Como fazer o upload de um objeto.

  3. Descreva a instância usada para exportar:
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. Use gsutil iam para conceder o papel storage.objectAdmin do IAM à 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.
  5. Exporte o banco de dados:
    gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --query=[SELECT_QUERY]
    

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

  6. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.

REST

  1. Crie um bucket para a exportação:
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

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

    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
    • select_query: consulta SQL para exportação

    Método HTTP e URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "databases": ["database_name"],
          "csvExportOptions":
           {
               "selectQuery":"select_query"
           }
       }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

    É preciso especificar corretamente um banco de dados com a propriedade databases e, se a consulta de seleção especificar um banco de dados, ele precisará ser o mesmo.

  4. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.
Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:export.

A exportação de CSV cria saída CSV padrão. Se você precisar de um formato CSV não padrão, use a instrução a seguir em um cliente psql:

  \copy [table_name] TO '[csv_file_name].csv' WITH
      (FORMAT csv, ESCAPE '[escape_character]', QUOTE '[quote_character]',
      DELIMITER '[delimiter_character]', ENCODING 'UTF8', NULL '[null_marker_string]');
Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:export.

Como exportar dados de um servidor PostgreSQL local usando pg_dump

Para exportar um banco de dados que não é gerenciado pelo Cloud SQL, para importação posterior no Cloud SQL, use o utilitário pg_dump com as sinalizações a seguir:

  • --no-owner

    Os comandos de mudança de propriedade não podem ser incluídos no arquivo dump SQL.

  • --format=plain

    Apenas o formato SQL simples é compatível com o Cloud SQL.

  • --no-acl

    Essa sinalização será necessária caso seu despejo tenha instruções para conceder ou revogar assinaturas em um papel SUPERUSER.

Além disso, remova todos os itens a seguir:

  • Instruções relacionadas à extensão, se o Cloud SQL não for compatível com ela. Consulte Extensões do PostgreSQL para acessar a lista de extensões compatíveis.
  • instruções CREATE EXTENSION ou DROP EXTENSION que referem a plpgsql. Essa extensão vem pré-instalada nas instâncias do Cloud SQL Postgres.
  • instruções COMMENT ON EXTENSION.

Na linha de comando, execute pg_dump:

pg_dump -U [USERNAME] --format=plain --no-owner --no-acl [DATABASE_NAME] \
    | sed -E 's/(DROP|CREATE|COMMENT ON) EXTENSION/-- \1 EXTENSION/g' > [SQL_FILE].sql

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

Confirme se a codificação padrão dos dados, conforme determinado pelas configurações do banco de dados, está correta. Se necessário, é possível substituir o padrão com a sinalização --encoding.

Para exportar 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_restore para importar em paralelo.

Se precisar de ajuda com pg_dump, consulte a referência de pg_dump.

A seguir