Re: sentencia copy a cliente

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: kernel <jucabapa(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: sentencia copy a cliente
Date: 2021-02-18 22:31:27
Message-ID: 90a29d31-11e5-1c7d-1fb1-fafd7d32ee4e@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


On 18/02/2021 8:01 pm, kernel wrote:
>
>
> El 18/02/2021 a las 1:01, Horacio Miranda escribió:
>>
>>
>> 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
>>>>
> hola no se si me he explicado bien, lo que tengo en la nube no es un
> servidor, es un servicio postgresql , nada mas , por eso el problema
>
Oracle tiene algo llamado Oracle way. postgresql tiene algo llamado
PostgreSQL way y RDS de Amazon tiene Amazon way.
Esta es la forma de exportar algo desde un RDS.

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/postgresql-s3-export.html

Luego lees el s3 ( solo asegurate que el s3 sea seguro ), sí esta
abierto a todo el mundo sin clave vas a compartir tus exports con el
planeta.

> Gracias
>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Aland Laines 2021-02-19 16:33:57 Sobre tipo de datos para latitud, longitud y sistema UTM
Previous Message kernel 2021-02-18 15:08:06 Re: sentencia copy a cliente