Re: sentencia copy a cliente

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>, kernel <jucabapa(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: sentencia copy a cliente
Date: 2021-02-18 00:01:37
Message-ID: 3dec962a-f8a4-d652-1ee7-92c27415adea@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


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_mail(at)domain(dot)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
>>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message kernel 2021-02-18 07:01:14 Re: sentencia copy a cliente
Previous Message Anthony Sotolongo 2021-02-17 19:55:35 Re: sentencia copy a cliente