Solución:
Ambos enfoques ya sugeridos parecen ser innecesariamente complicados.
Solo usa psql
está incorporado copy
comando, que funciona igual que en el lado del servidor COPY
pero hace una copia sobre el protocolo de cable al cliente y usa rutas de cliente.
Porque es un psql
comando de barra diagonal inversa, omite el punto y coma al final, por ejemplo:
copy products TO '/tmp/products.csv' CSV DELIMITER ','
Ver el copy
entrada en el manual para el psql
comando y el COPY
documentación de comandos para obtener más detalles.
Al igual que COPY
puedes usar copy
con un (SELECT ...)
consulta en lugar de un nombre de tabla al copiar datos (pero no dentro).
Una alternativa generalmente inferior que puede ser útil en algunas situaciones limitadas es usar:
psql -t -P format=unaligned -P fieldsep_zero=on -c 'SELECT * FROM tablename'
y usa el -o
bandera o redirección de salida de shell para escribir la salida en un archivo. Casi siempre deberías usar copy
con preferencia a esto.
El comando de Linux es:
psql -h 127.0.0.1 -U username -o file.csv -c 'select id, name from clients;'