tutorial example comandos postgresql psql

postgresql - example - psql-u linux



psql-guarda los resultados del comando en un archivo (6)

Estoy usando /dt qt de psql para enumerar todas las tablas en una base de datos y necesito guardar los resultados.

¿Cuál es la sintaxis para exportar los resultados de un comando psql a un archivo?


De la ayuda de psql ( /? ):

/ o [ARCHIVO] enviar todos los resultados de la consulta al archivo o | canalización

La secuencia de comandos se verá así:

[wist@scifres ~]$ psql db Welcome to psql 8.3.6, the PostgreSQL interactive terminal db=>/o out.txt db=>/dt db=>/q [wist@scifres ~]$


El comando psql /o ya fue descrito por jhwist.

Un enfoque alternativo es usar el comando COPY TO para escribir directamente en un archivo en el servidor. Esto tiene la ventaja de que se descarga en un formato fácil de analizar de su elección, en lugar del formato tabulado de psql. También es muy fácil de importar a otra tabla / base de datos utilizando COPY FROM .

¡NÓTESE BIEN! Esto requiere privilegios de superusuario y escribirá en un archivo en el servidor .

Ejemplo: COPY (SELECT foo, bar FROM baz) TO ''/tmp/query.csv'' (format csv, delimiter '';'')

Crea un archivo CSV con '';'' como el separador de campo.

Como siempre, ver la documentación para más detalles.


Si obtuvo el siguiente error ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO ''/tmp/query.csv'' (format csv, delimiter '';'') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql''s /copy command also works for anyone. ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO ''/tmp/query.csv'' (format csv, delimiter '';'') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql''s /copy command also works for anyone.

Puedes ejecutarlo de esta manera:

psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter '';'')" > baz.csv


Supongo que existe algún comando psql interno para esto, pero también puede ejecutar el comando de script desde el paquete util-linux-ng :

DESCRIPCIÓN Script hace un mecanografiado de todo lo impreso en su terminal.


COPY tablename TO ''/tmp/output.csv'' DELIMITER '','' CSV HEADER; Este comando se utiliza para almacenar toda la tabla como CSV.


/copy que es un comando postgres, puede funcionar para cualquier usuario. No sé si funciona para / dt o no, pero la sintaxis general se reproduce desde el siguiente enlace Sintaxis de copia de SQL de Postgres

/copy (select * from tempTable limit 100) to ''filenameinquotes'' with header delimiter as '',''

Lo anterior guardará la salida de la consulta de selección en el nombre de archivo proporcionado como un archivo csv

EDITAR:

Para mi servidor psql, el siguiente comando funciona, esta es una versión anterior v8.5

copy (select * from table1) to ''full_path_filename'' csv header;