Esta página descreve como exportar e importar dados para instâncias do Cloud SQL usando arquivos CSV.
Antes de começar
Antes de iniciar uma operação de exportação ou importação:
- Certifique-se de que seu banco de dados tenha espaço livre adequado.
- Verifique se o arquivo CSV contém os dados esperados e se está no formato correto. Arquivos CSV devem ter uma linha para cada linha de campos de dados.
- Siga as melhores práticas para exportar e importar dados.
As operações de exportação e importação usam recursos do banco de dados, mas não interferem nas operações normais do banco de dados, a menos que a instância esteja subprovisionada.
Exportar dados do Cloud SQL para MySQL
Funções e permissões necessárias para exportar do Cloud SQL para MySQL
Para exportar dados do Cloud SQL para o Cloud Storage, o usuário que inicia a exportação deve ter uma das seguintes funções:
- A função Editor do Cloud SQL
- Uma função personalizada , incluindo as seguintes permissões:
-
cloudsql.instances.get
-
cloudsql.instances.export
-
Além disso, a conta de serviço da instância do Cloud SQL deve ter uma das seguintes funções:
- A função
storage.objectAdmin
Identity and Access Management (IAM) - Uma função personalizada, incluindo as seguintes permissões:
-
storage.objects.create
-
storage.objects.list
(para exportar arquivos apenas em paralelo) -
storage.objects.delete
(para exportar arquivos apenas em paralelo)
-
Para obter ajuda com funções do IAM, consulte Gerenciamento de Identidade e Acesso .
Exportar dados para um arquivo CSV do Cloud SQL para MySQL
Você pode exportar seus dados em formato CSV, que pode ser usado por outras ferramentas e ambientes. As exportações ocorrem no nível do banco de dados. Durante uma exportação CSV, você pode especificar os esquemas a serem exportados. Todos os esquemas no nível do banco de dados são elegíveis para exportação.
Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo CSV em um bucket do Cloud Storage:
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- Clique em Exportar .
- Selecione Descarregar exportação para permitir que outras operações ocorram enquanto a exportação estiver em andamento.
- Clique em Mostrar opções avançadas .
- Na seção Banco de dados , selecione o nome do banco de dados no menu suspenso.
Para consulta SQL , insira uma consulta SQL para especificar a tabela da qual exportar dados.
Por exemplo, para exportar todo o conteúdo da tabela
entries
no banco de dadosguestbook
, você insere Sua consulta deve especificar uma tabela no banco de dados especificado. Não é possível exportar um banco de dados inteiro no formato CSV.SELECT * FROM guestbook.entries;
- Clique em Exportar para iniciar a exportação.
- A caixa "Exportar banco de dados?" é aberta com uma mensagem informando 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 você pode realizar na instância é visualizar as informações. Após o início da exportação, você pode cancelá-la . Se este for um bom momento para iniciar uma exportação, clique em Exportar . Caso contrário, clique em Cancelar .
gcloud
- Crie um bucket do Cloud Storage.
Carregue o arquivo no seu bucket.
Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos .
- Encontre a conta de serviço da instância do Cloud SQL da qual você está exportando. Você pode fazer isso executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
na saída.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder a funçãostorage.objectAdmin
do IAM à conta de serviço da instância do Cloud SQL. Para obter ajuda na definição de permissões do IAM, consulte "Usando permissões do IAM" . - Exportar o banco de dados:
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY
Para obter informações sobre como usar o comando
export csv
, consulte a página de referência do comandosql export csv
. - Se você não precisar manter a função do IAM definida anteriormente, revogue -a agora.
REST v1
- Crie um bucket para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Esta etapa não é obrigatória, mas é altamente recomendada, para que você não abra acesso a nenhum outro dado.
- Forneça à sua instância a função
legacyBucketWriter
do IAM para o seu bucket. Para obter ajuda com a definição de permissões do IAM, consulte Usando permissões do IAM . Exporte seu banco de dados:
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- 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
- offload : Habilita a exportação sem servidor. Defina como
true
para usar a exportação sem servidor. - select_query : consulta SQL para exportação (opcional)
- escape_character : O caractere que deve aparecer antes de um caractere de dados que precisa ser escapado. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "22" representa aspas duplas. (opcional)
- quote_character : o caractere que delimita valores de colunas que possuem um tipo de dado string. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "22" representa aspas duplas. (opcional)
- fields_terminated_by : O caractere que divide os valores da coluna. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by : O caractere que divide os registros de linha. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "0A" representa uma nova linha. (opcional)
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/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"], "offload": true | false "csvExportOptions": { "selectQuery":"select_query", "escapeCharacter":"escape_character", "quoteCharacter":"quote_character", "fieldsTerminatedBy":"fields_terminated_by", "linesTerminatedBy":"lines_terminated_by" } } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Se sua consulta de seleção especificar um banco de dados, ela substituirá a propriedade
databases
.- Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as agora.
REST v1beta4
- Crie um bucket para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Esta etapa não é obrigatória, mas é altamente recomendada, para que você não abra acesso a nenhum outro dado.
- Forneça à sua instância a função
storage.objectAdmin
do IAM para o seu bucket. Para obter ajuda na definição de permissões do IAM, consulte "Usando permissões do IAM" . Exporte seu banco de dados:
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- 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
- offload : Habilita a exportação sem servidor. Defina como
true
para usar a exportação sem servidor. - select_query : consulta SQL para exportação (opcional)
- escape_character : O caractere que deve aparecer antes de um caractere de dados que precisa ser escapado. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "22" representa aspas duplas. (opcional)
- quote_character : O caractere que delimita valores de colunas que possuem um tipo de dado string. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "22" representa aspas duplas. (opcional)
- fields_terminated_by : O caractere que divide os valores da coluna. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by : O caractere que divide os registros de linha. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "0A" representa uma nova linha. (opcional)
Método HTTP e URL:
POST https://sqladmin.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"], "offload": true | false "csvExportOptions": { "selectQuery": "select_query", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Se sua consulta de seleção especificar um banco de dados, ela substituirá a propriedade
databases
.- Se você não precisar manter a função do IAM definida anteriormente, revogue -a agora.
Personalize o formato de um arquivo de exportação CSV
Você pode usar gcloud
ou a API REST para personalizar o formato do seu arquivo CSV. Ao realizar uma exportação, você pode especificar as seguintes opções de formatação:
Opção CSV | Valor padrão | sinalizador gcloud | Propriedade da API REST | Descrição |
---|---|---|---|---|
Escapar | Código hexadecimal ASCII para separador de arquivos. | --escape | escapeCharacter | Caractere que aparece antes de um caractere de dados que precisa ser escapado. Disponível somente para MySQL e PostgreSQL. |
Citar | Código hexadecimal ASCII para aspas duplas. | --quote | quoteCharacter | Caractere que envolve valores de colunas que têm um tipo de dado string. Disponível somente para MySQL e PostgreSQL. |
Delimitador de campo | Código hexadecimal ASCII para vírgula. | --fields-terminated-by | fieldsTerminatedBy | Caractere que divide valores de colunas. Disponível somente para MySQL e PostgreSQL. |
Caractere de nova linha | Código hexadecimal ASCII para nova linha. | --lines-terminated-by | linesTerminatedBy | Caractere que divide registros de linha. Disponível somente para MySQL. |
Por exemplo, um comando gcloud
usando todos esses argumentos poderia ser assim:
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
O corpo da solicitação da API REST equivalente ficaria assim:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": ["DATABASE_NAME"], "offload": true, "csvExportOptions": { "selectQuery": "SELECT_QUERY", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
Os exemplos anteriores gcloud
e da API são equivalentes à execução da seguinte instrução SQL:
SELECT [QUERY] INTO OUTFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
Importar dados para o Cloud SQL para MySQL
Funções e permissões necessárias para importar para o Cloud SQL para MySQL
Para importar dados do Cloud Storage para o Cloud SQL, o usuário que inicia a importação deve ter uma das seguintes funções:
- A função de administrador do Cloud SQL
- Uma função personalizada , incluindo as seguintes permissões:
-
cloudsql.instances.get
-
cloudsql.instances.import
-
Além disso, a conta de serviço da instância do Cloud SQL deve ter uma das seguintes funções:
- A função
storage.objectAdmin
do IAM - Uma função personalizada, incluindo as seguintes permissões:
-
storage.objects.get
-
storage.objects.list
(para importar arquivos apenas em paralelo)
-
Para obter ajuda com funções do IAM, consulte Gerenciamento de Identidade e Acesso .
Exporte dados do seu servidor MySQL local para um arquivo CSV
Para exportar uma tabela MySQL para importação no Cloud SQL, recomendamos que você formate o arquivo usando o seguinte comando:
mysql --host=INSTANCE_IP --user=USER_NAME --password DATABASE \ -e " SELECT * FROM TABLE INTO OUTFILE 'FILE_NAME' CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' "
Você pode personalizar o formato do seu arquivo de exportação CSV.
Importar dados de um arquivo CSV para o Cloud SQL para MySQL
- O banco de dados e a tabela para os quais você está importando devem existir na sua instância do Cloud SQL. Para obter ajuda com a criação de um banco de dados, consulte Criação de um banco de dados .
Para criar uma tabela, use a instrução SQL
CREATE TABLE
no clientemysql
. - Seu arquivo CSV deve estar em conformidade com os requisitos de formato de arquivo CSV .
- Se você estiver importando dados exportados de um servidor MySQL local:
- Crie um bucket no Cloud Storage .
- Carregue o arquivo de despejo SQL no bucket do Cloud Storage.
Requisitos de formato de arquivo CSV
Os arquivos CSV devem ter uma linha para cada linha de dados e usar campos separados por vírgula.
Para importar dados para uma instância do Cloud SQL usando um arquivo CSV:
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- Clique em Importar .
- Na seção "Escolha o arquivo do qual deseja importar os dados" , insira o caminho para o bucket e o arquivo CSV a serem usados para a importação. Ou navegue até o arquivo:
- Clique em Procurar .
- Na seção Localização , clique duas vezes no nome do bucket na lista.
- Selecione o arquivo na lista.
- Clique em Selecionar .
Você pode importar um arquivo compactado (
.gz
) ou descompactado (.csv
). - Na seção Formato , selecione CSV .
- Especifique o banco de dados e a tabela na sua instância do Cloud SQL para onde você deseja importar o arquivo CSV.
- Clique em Importar para iniciar a importação.
gcloud
- Crie um bucket do Cloud Storage.
Carregue o arquivo no seu bucket.
Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos .
- Carregue dados do arquivo CSV para o bucket.
- Identifique a conta de serviço da instância do Cloud SQL da qual você está exportando. Você pode fazer isso executando o comando
gcloud sql instances describe
com o nome da instância. Procure o camposerviceAccountEmailAddress
na saída.gcloud sql instances describe INSTANCE_NAME
- Copie o campo serviceAccountEmailAddress.
- Use
gcloud storage buckets add-iam-policy-binding
para conceder a funçãostorage.objectAdmin
do IAM à conta de serviço da instância do Cloud SQL para o bucket. Para obter ajuda na definição de permissões do IAM, consulte "Usando permissões do IAM" . - Importe o arquivo:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME
Para obter informações sobre como usar o comando
import csv
, consulte a página de referência do comandosql import csv
. - 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
- Crie um bucket do Cloud Storage.
Carregue o arquivo no seu bucket.
Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos .
- Forneça à sua instância as funções do IAM
legacyBucketWriter
eobjectViewer
para o seu bucket. Para obter ajuda na definição de permissões do IAM, consulte Usando permissões do IAM . - Importe o arquivo:
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- 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
- escape_character : O caractere que deve aparecer antes de um caractere de dados que precisa ser escapado. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "22" representa aspas duplas. (opcional)
- quote_character : O caractere que delimita valores de colunas que possuem um tipo de dado string. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "22" representa aspas duplas. (opcional)
- fields_terminated_by : O caractere que divide os valores da coluna. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by : O caractere que divide os registros de linha. O valor deste argumento deve ser um caractere em código ASCII hexadecimal. Por exemplo, "0A" representa uma nova linha. (opcional)
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", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Para obter a lista completa de parâmetros para a solicitação, consulte a página instances:import . - Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.
REST v1beta4
- Crie um bucket do Cloud Storage.
Carregue o arquivo no seu bucket.
Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos .
- Forneça à sua instância a função
storage.objectAdmin
do IAM para o seu bucket. Para obter ajuda na definição de permissões do IAM, consulte "Usando permissões do IAM" . - Importe o arquivo:
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- 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
- escape_character : O caractere que deve aparecer antes de um caractere de dados que precisa ser escapado. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "22" representa aspas duplas. (opcional)
- quote_character : O caractere que delimita valores de colunas que possuem um tipo de dado string. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "22" representa aspas duplas. (opcional)
- fields_terminated_by : O caractere que divide os valores da coluna. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by : O caractere que divide os registros de linha. O valor deste argumento deve estar no formato hexadecimal ASCII . Por exemplo, "0A" representa uma nova linha. (opcional)
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", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Para obter a lista completa de parâmetros para a solicitação, consulte a página instances:import . - Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.
Personalize o formato de um arquivo CSV para o Cloud SQL para MySQL
Você pode usar gcloud
ou a API REST para personalizar o formato do arquivo CSV.
Segue um exemplo de comando gcloud
:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
O corpo da solicitação da API REST equivalente ficaria assim:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": ["DATABASE_NAME"], "csvImportOptions": { "table": "TABLE_NAME", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
Os exemplos anteriores gcloud
e da API são equivalentes à execução da seguinte instrução SQL:
LOAD DATA LOCAL INFILE ... CHARACTER SET 'utf8mb4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\'.
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 obter ajuda na configuração do controle de acesso no Cloud Storage, consulte Criar e gerenciar listas de controle de acesso .
O que vem a seguir
- Aprenda como consultar o status das operações de importação e exportação .
- Saiba mais sobre as melhores práticas para importar e exportar dados .
- Problemas conhecidos para importações e exportações .