Resumo: neste tutorial, aprenderá várias técnicas para exportar dados de tabelas PostgreSQL para ficheiros CSV.
No tutorial anterior, mostrámos-lhe como importar dados de um ficheiro CSV para uma tabela. Utilizaremos a tabela persons
que criámos para a importação de dados de um ficheiro CSV.
V>Vejamos os dados de verificação da tabela persons
.
Code language: SQL (Structured Query Language) (sql)SELECT*FROMpersons;
Temos dois registos na tabela.
Exportar dados de uma tabela para CSV usando a declaração COPY
A forma mais fácil de exportar dados de uma tabela para um ficheiro CSV é usar COPY
declaração. Por exemplo, se quiser exportar os dados da pasta persons
tabela para um ficheiro CSV chamado persons_db.csv
na pasta C:\tmp
, pode usar a seguinte declaração:
Code language: SQL (Structured Query Language) (sql)COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
PostgreSQL exporta todos os dados de todas as colunas do ficheiro persons
tabela para o ficheiro persons_db.csv
.
Em alguns casos, pretende exportar dados de apenas algumas colunas de uma tabela para um ficheiro CSV. Para o fazer, especifica os nomes das colunas juntamente com o nome da tabela após COPY
palavra-chave. Por exemplo, a seguinte declaração exporta dados do first_name
last_name
, e email
colunas do persons
tabela para person_partial_db.csv
Code language: SQL (Structured Query Language) (sql)COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;
Se não quiser exportar o cabeçalho, que contém os nomes das colunas da tabela, basta remover a declaração HEADER
bandeira no COPY
. A seguinte declaração exporta apenas dados da tabela email
coluna da tabela persons
para um ficheiro CSV.
Code language: SQL (Structured Query Language) (sql)COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;
Notificação de que o nome do ficheiro CSV que especificar no comando COPY
deve ser escrito directamente pelo servidor. Isto significa que o ficheiro CSV deve residir na máquina do servidor de bases de dados, e não na sua máquina local. O ficheiro CSV também precisa de poder ser escrito pelo utilizador que o servidor PostgreSQL executa como.
Exportar dados de uma tabela para ficheiro CSV usando o comando \copy
No caso de ter acesso a um servidor remoto de base de dados PostgreSQL, mas não ter privilégios suficientes para escrever num ficheiro nele, pode usar o comando incorporado no PostgreSQL \copy
.
O comando \copy
executa basicamente o comando COPY
declaração acima. Contudo, em vez de o servidor escrever o ficheiro CSV, psql escreve o ficheiro CSV, transfere dados do servidor para o seu sistema de ficheiros local. Para usar \copy
comando, só precisa de ter privilégios suficientes para a sua máquina local. Não requer privilégios de superutilizador PostgreSQL.
Por exemplo, se quiser exportar todos os dados do comando persons
tabela em persons_client.csv
ficheiro, pode executar o comando \copy
a partir do cliente psql como se segue:
Code language: SQL (Structured Query Language) (sql)\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
Neste tutorial, mostramos-lhe como utilizar COPY
comando e \copy
comando para exportar dados de uma tabela para ficheiros CSV.