2012-04-25 30 views
21

Deseo volcar una consulta de selección a un archivo de texto delimitado por tabuladores usando psql -F. Sin embargo, esto no funciona:Cómo establecer el delimitador de tabulación usando psql -F

psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt 

Eso hace que el delimitador sea literal \ t. ¿Cómo puedo usar pestañas reales en su lugar?

Respuesta

29

Creo que solo necesita utilizar una pestaña literal. Cómo funciona esto depende de tu caparazón. ¿Has visto esto post?

En el shell bash puedes hacerlo con $'\t'.

Utilizando el ejemplo en su pregunta:

psql -Umyuser mydb -AF $'\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt 
+3

Gracias! Ese hilo ayudó. Lo tengo que trabajar usando 'psql -Umyuser mydb -F $ '\ t' --no-align -c" select * from mytable "-o/tmp/dumpfile.txt' –

+0

El comentario de Jammie Forrest es muy útil. fbarber quizás podría agregarlo a la respuesta – Dimitris

+0

Tuve que agregar '-A' también, para forzar la salida desalineada. Esto puede haberse convertido en un requisito en las versiones psql más recientes. – dland

3

En Unix, también puede escribir

ctrl-V tab 

Ctrl-V le dice al terminal de no interpretar la siguiente tecla.

Esto también funciona con retornos de carro (^ M) y muchas otras teclas especiales como teclas de flecha

3

En caso de que si alguien buscó la forma de hacerlo en el intérprete de comandos interactivo: \f '\t'

Cuestiones relacionadas