On 18/02/2021 8:55 am, Anthony Sotolongo wrote:
Hola Kernel, como comentas puedes usar STDOUT, el cual te enviará los
datos a tu client, por ejemplo con psql:
psql -U postgres -h tu_server_en_la_nube -c "COPY (select * from
tu_tabla) to STDOUT WITH CSV HEADER DELIMITER ',';" > tu_archivo.csv
Los servidores pueden mandar email tambien.
Puedes hacer esta logica si quieres en el server en la nube que es mas
rapido ejecutar cosas locales.
#!/bin/bash
PGUSER=<USER>
PGPASSWORD=<PASS>
PGPORT=<PUERTO>
PGDATABASE=<BASE>
PGHOST=<HOST>
psql -c "COPY (select * from tu_tabla) to STDOUT WITH CSV HEADER
DELIMITER ',';" > /tmp/tu_archivo.csv
cd /tmp # Esto solo es para evitar que en el ZIP esten los path como /tmp
zip tu_archivo.csv.zip tu_archivo.csv
uuencode tu_archivo.csv tu_archivo.csv | mail -s
"export_desde_lanube_$(hostname)" algun_m...@domain.com
uuencode lo encuentras como parte del sharutils si usas algo como rpm
puedes hacer "yum provides */uuencode"
Ahora puedes hacer un sftp, o cualquier cosa que quieras para traerte el
archivo.
Si lo quieres local puedes hacer un rsync tambien, posibilidades hay muchas.
Ahora si este archivo es algo que se genera para un cliente, que se
envie un email de forma automatica creo que puede ser bien interesante.
Saludos
On 2/17/21 4:14 PM, kernel wrote:
Hola,
Necesito generar un fichero csv desde una aplicación, hasta la fecha
llamaba a una función , la cual me ejecutaba una sentencia copy de un
query determinado y lo sacaba a un fichero local.
Si contrato algún servicio de DB en la nube no voy a poder dejar el
fichero en local. He visto que la función copy tiene algo de stdout ,
pero no se como conectarlo son mi aplicación.
El lenguaje que utilizo es 4GL , solo puedo hacer querys cuyo
resultado lo recojo en variables
me pregunto si existe alguna función en la que pueda generar un csv
desde una consulta y me lo devuelva en un tipo de variable byte o
algo asi, que luego yo pueda guardar donde yo quiera|.||||
|
no se si he sido capaz de explicarme.
Gracias
Un Saludo