O comando \copy no psql permite exportar dados de uma instância do AnalyticDB for PostgreSQL diretamente para um arquivo no computador local, sem exigir privilégios de SUPERUSER.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do AnalyticDB for PostgreSQL em execução
O psql instalado e configurado para conexão com a instância (consulte Conexão do cliente)
O Data Management (DMS) não oferece suporte ao comando\copy. Use o psql para executar o\copy.
Como funciona
O \copy é um metacomando do psql que executa o comando SQL subjacente COPY, mas roteia os dados pelo cliente em vez do servidor. O psql lê ou grava o arquivo especificado e transfere os dados entre o servidor e o sistema de arquivos local, sem que o servidor precise acessar o arquivo diretamente. Assim, o usuário local controla o acesso e as permissões de arquivo, eliminando a necessidade de permissão de SUPERUSER.
\copy vs COPY:
|
** |
** |
|
|
Local de execução |
Cliente psql |
Servidor de banco de dados |
|
Acesso a arquivos |
Sistema de arquivos local (FILE, STDIN, STDOUT) |
Apenas STDIN e STDOUT |
|
SUPERUSER necessário |
Não |
Sim (para acesso a FILE) |
O AnalyticDB for PostgreSQL não oferece suporte à permissão SUPERUSER. Use o \copy para exportar dados para arquivos locais.
Sintaxe
\COPY {table [(column [, ...])] | (query)} TO {'file' | STDOUT}
[ [WITH] [OIDS] [HEADER]
[DELIMITER [ AS ] 'delimiter']
[NULL [ AS ] 'null string']
[ESCAPE [ AS ] 'escape' | 'OFF']
[CSV [QUOTE [ AS ] 'quote']
[FORCE QUOTE column [, ...]] ]
[IGNORE EXTERNAL PARTITIONS ] ]
As opções WITH são:
|
Opção |
Descrição |
|
|
Inclui OIDs em cada linha |
|
|
Adiciona uma linha de cabeçalho com os nomes das colunas (apenas formato CSV) |
|
|
Caractere separador de colunas, por exemplo |
|
|
String representativa de valores nulos, por exemplo |
|
|
Caractere de escape para saída CSV |
|
|
Usa o formato CSV |
|
|
Caractere de aspas para o formato CSV |
|
|
Força aspas nas colunas especificadas na saída CSV |
|
|
Ignora partições externas durante a exportação |
Para a referência completa da sintaxe, consulte COPY na documentação do PostgreSQL.
O AnalyticDB for PostgreSQL também permite executar a instruçãoCOPYvia JDBC. O métodoCopyInestá encapsulado no JDBC. Para mais detalhes, consulte Interface CopyIn .
Exportar dados para um arquivo local
Conecte-se à instância usando o psql e execute \copy para exportar uma tabela ou resultado de consulta para um arquivo local.
Exportar uma tabela inteira:
\COPY test1 TO '/path/to/localfile';
Exportar com formato CSV e delimitador personalizado:
\COPY test1 TO '/path/to/localfile.csv' WITH CSV DELIMITER ',';
Exportar resultados de consulta:
\COPY (SELECT id, name FROM test1 WHERE status = 'active') TO '/path/to/output.csv' WITH CSV HEADER;
Substitua os espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Nome da tabela a exportar |
|
|
|
Caminho absoluto do arquivo de saída na máquina local |
|