2010-12-16 19 views
9

Estoy creando una base de datos PostgreSQL desde la línea de comandos (es decir, usando psql).psql -o no es lo que esperaba (cómo dar salida a la respuesta de db a un archivo de salida)

hay algunos errores en mis sentencias SQL y quiero averiguar donde los errores se están produciendo (demasiados objetos para llenar el búfer de pantalla - por lo que necesitan para salvar thios a archivo)

He intentado apenas sobre todo, desde el uso de la opción -o, la opción -L y el uso de tee - todavía no puedo capturar la información que se desplaza en la pantalla.

¿Cómo puedo registrar esto?

Esto es lo que he probado hasta ahora:

  • psql -U -o -f dbcreate.log file.sql
  • psql -U -L dbcreate.log -f file.sql
  • psql -U -a -f file.sql | tee dbcreate.log

NINGUNO de los cuales da como resultado el destello de datos a través de la pantalla que se registra en el archivo - ¿cómo puedo hacer esto?

+0

¿Has probado 'pg_dump'? http://www.cyberciti.biz/tips/tag/pg-dump-command – sje397

+0

'-U' es para especificar un nombre de usuario, ¿para qué sirve en su línea de comandos? –

Respuesta

11

Necesita redireccionar stderr. En Un * x y Linux:

psql ... 2>error.log 

o ambos stdout y stderr:

psql ... &>error.log 

Por otro lado si se quiere investigar los errores uno por uno:

psql -v ON_ERROR_STOP=1 ... 

Un Artículo útil sobre la ejecución de scripts SQL con psql - here.

+0

Parece justo lo que necesito. En cuanto a su otra pregunta (opción -U en la línea de comandos): ¿hay alguna manera de ejecutar estos comandos (por ejemplo, desde un script bash), totalmente automatizados, es decir, sin que me solicite una contraseña? – skyeagle

+0

Muy buen artículo por cierto. ¡Tengo el libro marcado en Delicious! – skyeagle

+1

Use [.pgpass] (http://www.postgresql.org/docs/current/static/libpq-pgpass.html). –

Cuestiones relacionadas