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 PostgreSQL
Funções e autorizações necessárias para exportar do Cloud SQL para PostgreSQL
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 PostgreSQL
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 Trusted 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.
-
Na secção Localização de exportação do Cloud Storage, adicione o nome do contentor,
da pasta e do ficheiro que quer exportar ou clique em Procurar para
encontrar ou criar um contentor, uma pasta ou um ficheiro.
Se clicar em Procurar:
- Na secção Localização, selecione um contentor ou uma pasta do Cloud Storage para a exportação.
Na caixa Nome, adicione um nome para o ficheiro
CSV
ou selecione um ficheiro existente na lista na secção Localização.Pode usar uma extensão de ficheiro
.gz
(a extensão completa seria.csv.gz
) para comprimir o ficheiro de exportação.- Clique em Selecionar.
- Na secção Formato, clique em CSV.
- Na secção Base de dados para exportação, 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:
Tem de especificar exatamente uma base de dados com a propriedade
databases
e, se a consulta de seleção especificar uma base de dados, tem de ser a mesma. - 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:
Tem de especificar exatamente uma base de dados com a propriedade
databases
e, se a consulta de seleção especificar uma base de dados, tem de ser a mesma. - 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" } } }
A exportação de CSV cria um resultado CSV padrão por predefinição. Se precisar de ainda mais opções do que o Cloud SQL oferece, pode usar a seguinte declaração num 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]');
Importe dados para o Cloud SQL para PostgreSQL
Funções e autorizações necessárias para a importação para o Cloud SQL para PostgreSQL
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.
Importe dados de um ficheiro CSV para o Cloud SQL para PostgreSQL
- 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.
- O ficheiro CSV tem de estar em conformidade com os requisitos do formato de ficheiro CSV.
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 Trusted 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.
- Opcionalmente, pode especificar um utilizador para a operação de importação.
- 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 PostgreSQL
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" } } }
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.