Tengo acceso de solo lectura a una base de datos en un servidor remoto. Entonces, puedo ejecutar:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Pero en ese servidor no tengo permisos para crear / guardar un archivo, así que necesito hacer esto en mi máquina local.
Cuando me conecto a la base de datos remota, ¿cómo puedo ejecutar un comando para guardar el archivo en mi máquina local en lugar del servidor remoto?
O, ¿cómo puedo ejecutar un comando de Linux para conectarme a la base de datos remota, ejecutar una consulta y guardar la salida como un archivo en mi máquina local?
fuente
psql
un script, comenzando conBEGIN
, luego haciendo sus\copy
comandos, luego aCOMMIT
. O usepsql -f
para ejecutar un script en lugar de usar un documento aquí.-A
lugar de-P format=unaligned
y también creo que necesita un-P fieldsep=,
El comando de Linux es:
fuente
-t -P format=unaligned
a ese comando, obtendrá algo un poco más cerca, como CSV delimitado por tuberías con errores, pero las tuberías en el texto no se escaparán, por lo que no será válido.-P fieldsep=','
excepto que esto sería aún más probable que cause errores debido a la falta de escape.-P fieldsep_zero=on
estaría bien si no le importara analizar texto delimitado por bytes nulos, ya que los bytes nulos no pueden ocurrir en lapsql
salida de forma natural.