2012-03-29 9 views
36

¿Cómo se ocultan los nombres de las columnas y el recuento de filas en la salida de psql?Cómo ocultar la decoración del conjunto de resultados en la salida Psql

estoy ejecutando una consulta SQL a través de psql con:

psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;" 

y estoy esperando una salida como:

1,abc 
2,def 
3,xyz 

pero en cambio me sale:

id,text 
------- 
1,abc 
2,def 
3,xyz 
(3 rows) 

De Por supuesto, no es imposible filtrar las dos filas superiores y la fila inferior después del hecho, pero ¿hay alguna forma de hacerlo solo con psql? Al leer su página de manual, veo opciones para controlar el delimitador de campo, pero nada para ocultar la salida externa.

Respuesta

42

Puede utilizar el -t o --tuples-only opción:

psql --user=myuser -d mydb --output=result.txt -t -c "SELECT * FROM mytable;"

Editado (más de un año después) para añadir:

Es posible que también desee comprobar hacia fuera the COPY command . Ya no tengo ninguna instancia de PostgreSQL a mano para probar con, pero creo que se puede escribir algo en este sentido:

psql --user=myuser -d mydb -c "COPY mytable TO 'result.txt' DELIMITER ','"

(excepto que result.txt tendrá que ser una ruta absoluta). El comando COPY también admite un formato CSV más inteligente; ver its documentation.

+16

alternativamente, si desea que el encabezado, pero no el pie de página de filas recuento, psql correr con --pset = "pie de página = off" –

+1

'COPY' puede ser de hecho una alternativa válida, pero el archivo terminará en el servidor, y no en la máquina donde se ejecuta psql ... – fvu

+0

@fvu: Buen punto. Usualmente ejecutaba 'psql' * en * el servidor, entonces para mí eso no era un problema. . . – ruakh

15

También puede redirigir la salida desde dentro de psql y usar la misma opción. Use \ o para establecer el archivo de salida, y \ t para generar tuplas solamente (o \pset para desactivar solo el "pie de página" de rowcount).

\o /home/flynn/queryout.txt 
\t on 
SELECT * FROM a_table; 
\t off 
\o 

Alternativamente,

\o /home/flynn/queryout.txt 
\pset footer off 
. . . 
Cuestiones relacionadas