PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Exportando dados contendo feeds de linha como CSV do PostgreSQL


Para exportar o arquivo em outro servidor você tem duas opções:
  • Criando uma pasta compartilhada entre os dois servidores, para que o banco de dados também tenha acesso a este diretório.

COPY (SELECT field1,field2 FROM your_table) TO '[shared directory]' DELIMITER ',' CSV HEADER;
  • Acionar a exportação do servidor de destino usando o STDOUT de COPY . Usando o psql você pode conseguir isso executando o seguinte comando:

psql yourdb -c "COPY (SELECT * FROM your_table) TO STDOUT" > output.csv

EDITAR :Resolvendo o problema de campos contendo feeds de linha (\n )

Caso você queira se livrar dos feeds de linha, use o REPLACE função.

Exemplo:
 SELECT E'foo\nbar';
 ?column? 
----------
 foo     +
 bar
(1 Zeile)

Removendo o avanço de linha:
SELECT REPLACE(E'foo\nbaar',E'\n','');
 replace 
---------
 foobaar
(1 Zeile)

Portanto, sua COPY deve ficar assim:
COPY (SELECT field1,REPLACE(field2,E'\n','') AS field2 FROM your_table) TO '[shared directory]' DELIMITER ',' CSV HEADER;