Esta página descreve a exportação e a importação de dados para instâncias do Cloud SQL através de ficheiros CSV.
Antes de começar
Antes de iniciar uma operação de exportação ou importação:
- Certifique-se de que a sua base de dados tem espaço livre adequado.
- Verifique se o ficheiro CSV tem os dados esperados e se está no formato correto. Os ficheiros CSV têm de ter uma linha para cada linha de campos de dados.
- Siga as práticas recomendadas para exportar e importar dados.
As operações de exportação e importação usam recursos da base de dados, mas não interferem com as operações normais da base de dados, a menos que a instância tenha um aprovisionamento insuficiente.
Exporte dados do Cloud SQL para MySQL
Funções e autorizações necessárias para exportar a partir do Cloud SQL para MySQL
Para exportar dados do Cloud SQL para o Cloud Storage, o utilizador que inicia a exportação tem de ter uma das seguintes funções:
- A função Editor do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.export
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A
storage.objectAdmin
função de gestão de identidade e de acesso (IAM) - Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.create
storage.objects.list
(apenas para exportar ficheiros em paralelo)storage.objects.delete
(apenas para exportar ficheiros em paralelo)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Exporte dados para um ficheiro CSV a partir do Cloud SQL para MySQL
Pode exportar os seus dados no formato CSV, que é utilizável por outras ferramentas e ambientes. As exportações ocorrem ao nível da base de dados. Durante uma exportação CSV, pode especificar os esquemas a exportar. Todos os esquemas ao nível da base de dados são elegíveis para exportação.
Para exportar dados de uma base de dados numa instância do Cloud SQL para um ficheiro CSV num contentor do Cloud Storage:
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Exportar.
- Selecione Exportação de transferência para permitir que outras operações ocorram enquanto a exportação está em curso.
- Clique em Mostrar opções avançadas.
- Na secção Base de dados, selecione o nome da base de dados no menu pendente.
-
Para Consulta SQL, introduza uma consulta SQL para especificar a tabela a partir da qual exportar dados.
Por exemplo, para exportar todo o conteúdo da tabela
entries
na base de dadosguestbook
, introduza A sua consulta tem de especificar uma tabela na base de dados especificada. Não pode exportar uma base de dados completa no formato CSV.SELECT * FROM guestbook.entries;
- Clique em Exportar para iniciar a exportação.
- A caixa Exportar base de dados? é aberta com uma mensagem a indicar que o processo de exportação pode demorar uma hora ou mais para bases de dados grandes. Durante a exportação, a única operação que pode realizar na instância é ver informações. Depois de iniciar a exportação, pode cancelar a operação. Se for uma boa altura para iniciar uma exportação, clique em Exportar. Caso contrário, clique em Cancelar.
gcloud
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a fazer a exportação. Pode fazê-lo executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função do IAM à conta de serviço da instância do Cloud SQL. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a base 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 a utilização do comando
export csv
, consulte a página de referência do comandosql export csv
- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
REST v1
- Crie um contentor para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. -
Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_csv_file: o caminho para o ficheiro CSV
- database_name: o nome de uma base de dados na instância do Cloud SQL
- offload: ativa 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 caráter que deve aparecer antes de um caráter de dados que tem de ser ignorado. O valor deste argumento tem de ser um carater no código ASCII hexadecimal. Por exemplo, "22" representa as aspas duplas. (opcional)
- quote_character:o caráter que inclui valores de colunas com um tipo de dados de string. O valor deste argumento tem de ser um carater no código ASCII hexadecimal. Por exemplo, "22" representa as aspas duplas. (opcional)
- fields_terminated_by: o caráter que divide os valores das colunas. O valor deste argumento tem de ser um carater no código ASCII hexadecimal. Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by: o caráter que divide os registos de linhas. O valor deste argumento tem de ser um carater no 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Se a consulta de seleção especificar uma base de dados, substitui a propriedade
databases
. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.
REST v1beta4
- Crie um contentor para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
storage.objectAdmin
função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. -
Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_csv_file: o caminho para o ficheiro CSV
- database_name: o nome de uma base de dados na instância do Cloud SQL
- offload: ativa 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 caráter que deve aparecer antes de um caráter de dados que tem de ser ignorado. O valor deste argumento tem de estar no formato hexadecimal ASCII. Por exemplo, "22" representa as aspas duplas. (opcional)
- quote_character: o caráter que inclui valores de colunas com um tipo de dados de string. O valor deste argumento tem de estar no formato hexadecimal ASCII. Por exemplo, "22" representa as aspas duplas. (opcional)
- fields_terminated_by: o caráter que divide os valores das colunas. O valor deste argumento tem de estar no formato hexadecimal ASCII. Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by: o caráter que divide os registos de linhas. O valor deste argumento tem de 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Se a consulta de seleção especificar uma base de dados, substitui a propriedade
databases
. - Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Personalize o formato de um ficheiro de exportação CSV
Pode usar gcloud
ou a API REST para personalizar o formato do ficheiro CSV. Quando
faz uma exportação, pode especificar as seguintes opções de formatação:
Opção CSV | Valor predefinido | flag gcloud | Propriedade da API REST | Descrição |
---|---|---|---|---|
Escape |
Código hexadecimal ASCII para o separador de ficheiros. |
--escape |
escapeCharacter |
Caráter que aparece antes de um caráter de dados que tem de ser ignorado. Disponível apenas para MySQL e PostgreSQL. |
Citação |
Código hexadecimal ASCII para aspas duplas. |
--quote |
quoteCharacter |
Carater que inclui valores de colunas com um tipo de dados de string. Disponível apenas para MySQL e PostgreSQL. |
Delimitador de campo |
Código hexadecimal ASCII para vírgula. |
--fields-terminated-by |
fieldsTerminatedBy |
Caráter que divide os valores das colunas. Disponível apenas para MySQL e PostgreSQL. |
Caráter de nova linha |
Código hexadecimal ASCII para nova linha. |
--lines-terminated-by |
linesTerminatedBy |
Caráter que divide os registos de linhas. Disponível apenas para o MySQL. |
Por exemplo, um comando gcloud
que use todos estes argumentos pode ser semelhante ao seguinte:
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 do pedido da API REST equivalente teria o seguinte aspeto:
{ "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 de API e gcloud
anteriores são equivalentes à execução da seguinte declaração SQL:
SELECT [QUERY] INTO OUTFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
Importe dados para o Cloud SQL para MySQL
Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL
Para importar dados do Cloud Storage para o Cloud SQL, o utilizador que inicia a importação tem de ter uma das seguintes funções:
- A função Administrador do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.import
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A função de IAM
storage.objectAdmin
- Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.get
storage.objects.list
(apenas para importar ficheiros em paralelo)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Exporte dados do seu servidor MySQL local para um ficheiro CSV
Para exportar uma tabela do MySQL para importação para o Cloud SQL, recomendamos que formate o ficheiro com 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 '\"' "
Pode personalizar o formato do seu ficheiro de exportação CSV.
Importe dados de um ficheiro CSV para o Cloud SQL para MySQL
- A base de dados e a tabela para as quais está a importar têm de existir na sua instância do Cloud SQL.
Para obter ajuda na criação de uma base de dados, consulte o artigo
Criar uma base de dados.
Para criar uma tabela, use a declaração SQL
CREATE TABLE
no clientemysql
. - O ficheiro CSV tem de estar em conformidade com os requisitos do formato de ficheiro CSV.
- Se estiver a importar dados que exportou de um servidor MySQL
no local:
- Crie um contentor no Cloud Storage.
- Carregue o ficheiro de captura SQL para o contentor do Cloud Storage.
Requisitos de formato de ficheiro CSV
Os ficheiros CSV têm de ter uma linha para cada linha de dados e usar campos separados por vírgulas.
Para importar dados para uma instância do Cloud SQL através de um ficheiro CSV:
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Importar.
- Na secção Selecionar ficheiro de origem, introduza o caminho para o contentor e o ficheiro CSV ou carregue um ficheiro CSV local para usar na importação. Para procurar o ficheiro:
- Clique em Procurar.
- Na secção Localização, clique duas vezes no nome do contentor na lista.
- Selecione o ficheiro na lista.
- Clique em Selecionar.
Pode importar um ficheiro comprimido (
.gz
) ou não comprimido (.csv
). - Na secção Formato, selecione CSV.
- Especifique a base de dados e a tabela na instância do Cloud SQL onde quer importar o ficheiro CSV.
- Clique em Importar para iniciar a importação.
gcloud
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Carregue dados do ficheiro CSV para o contentor.
- Identifique a conta de serviço da instância do Cloud SQL a partir da qual está a fazer a exportação. Pode fazê-lo executando o comando
gcloud sql instances describe
com o nome da instância. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Copie o campo serviceAccountEmailAddress.
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função do IAM à conta de serviço da instância do Cloud SQL para o contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe o ficheiro:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME
Para obter informações sobre a utilização do comando
import csv
, consulte a página de referência do comandosql import csv
. - Se não precisar de manter as autorizações de IAM que
definiu anteriormente, remova-as através de
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância as funções de IAM
legacyBucketWriter
eobjectViewer
para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe o ficheiro:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_csv_file: o caminho para o ficheiro CSV
- database_name: o nome de uma base de dados na instância do Cloud SQL
- table_name: o nome da tabela da base de dados
- escape_character: o caráter que deve aparecer antes de um caráter de dados que tem de ser ignorado. O valor deste argumento tem de ser um carater no código ASCII hexadecimal. Por exemplo, "22" representa as aspas duplas. (opcional)
- quote_character: o caráter que inclui valores de colunas com um tipo de dados de string. O valor deste argumento tem de ser um carater no código ASCII hexadecimal. Por exemplo, "22" representa as aspas duplas. (opcional)
- fields_terminated_by: o caráter que divide os valores das colunas. O valor deste argumento tem de ser um carater no código ASCII hexadecimal. Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by: o caráter que divide os registos de linhas. O valor deste argumento tem de ser um carater no 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
REST v1beta4
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe o ficheiro:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_csv_file: o caminho para o ficheiro CSV
- database_name: o nome de uma base de dados na instância do Cloud SQL
- table_name: o nome da tabela da base de dados
- escape_character: o caráter que deve aparecer antes de um caráter de dados que tem de ser ignorado. O valor deste argumento tem de estar no formato hexadecimal ASCII. Por exemplo,"22" representa as aspas duplas. (opcional)
- quote_character: o caráter que inclui valores de colunas com um tipo de dados de string. O valor deste argumento tem de estar no formato hexadecimal ASCII. Por exemplo, "22" representa as aspas duplas. (opcional)
- fields_terminated_by: o caráter que divide os valores das colunas. O valor deste argumento tem de estar no formato hexadecimal ASCII. Por exemplo, "2C" representa uma vírgula. (opcional)
- lines_terminated_by: o caráter que divide os registos de linhas. O valor deste argumento tem de 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
Personalize o formato de um ficheiro CSV para o Cloud SQL para MySQL
Pode usar gcloud
ou a API REST para personalizar o formato do ficheiro CSV.
Segue-se 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 do pedido da API REST equivalente teria o seguinte aspeto:
{ "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 de API e gcloud
anteriores são equivalentes à execução da seguinte declaração SQL:
LOAD DATA LOCAL INFILE ... CHARACTER SET 'utf8mb4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\'.
Se receber um erro, como ERROR_RDBMS
, certifique-se de que a tabela existe. Se a tabela existir, confirme que tem as autorizações corretas no contentor. Para obter ajuda na configuração do controlo de acesso no Cloud Storage, consulte o artigo
Crie e faça a gestão de listas de controlo de acesso.
O que se segue?
- Saiba como verificar o estado das operações de importação e exportação.
- Saiba mais sobre as práticas recomendadas para importar e exportar dados.
- Problemas conhecidos para importações e exportações.