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-23 09:58:16
Message-ID: d180ba2e-4c3a-9a62-e44d-ae201949fa9f@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Lee y prueba.  /tmp es un directorio comun para cualquier linux y
cualquiera pruede escribir ahi. el tema es el espacio.

si quieres hacer algo generico es mucho mejor tener algo en la nube
generico algo como una variable.

Si esto es parte de tu solucion debes pedir como requisito un espacio X
y la capacidad de exportarlo ahi.

On 23/02/2021 10:49 pm, kernel wrote:
>
> Haber te he entendido bien
>
> ¿ quieres decir que el gestor postgres siempre tiene acceso al /tmp?
>
> si es así puedo crear un función que ejecute la sentencia copy que
> necesito, lo vuelque en el /tmp , ¿pero  luego lo puedo leerlo desde
> postgresql? , ¿tendré permisos?
>
> Un Saludo
>
>
>
> El 23/02/2021 a las 10:29, Horacio Miranda escribió:
>>
>> Toma la idea y revisa que servicio cada cliente tiene.
>>
>> Si quieres algo rapido claro esta, la gracia es que sea latencia
>> baja. Puede ser archivo local o en el /tmp.
>>
>> Toda maquina tiene acceso a un /tmp independiente de lo que sea.
>>
>> /dev/shm es otra alternativa pero usa RAM y solo el 50% de la RAM de
>> la maquina.
>>
>> On 23/02/2021 10:27 pm, kernel wrote:
>>>
>>> Puede se cualquiera que te de el servicio, ovh por ejemplo te da el
>>> servicio asi
>>>
>>> https://www.ovh.es/cloud-databases/
>>>
>>> Estoy buscando una manera de hacerlo sin depender de quien da el
>>> servicio y sin tener que hacer nada especial para cada proveedor
>>>
>>> Un Saludo
>>>
>>> El 23/02/2021 a las 10:12, Horacio Miranda escribió:
>>>>
>>>> Que cosa es ? si no es amazon ?
>>>>
>>>> On 23/02/2021 8:16 pm, kernel wrote:
>>>>>
>>>>>
>>>>> El 18/02/2021 a las 23:31, Horacio Miranda escribió:
>>>>>>
>>>>>>
>>>>>> 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 por tu respuesta , el problema es que no es amazon.
>>>>>
>>>>> Gracias
>>>>>
>>>>>>> Gracias
>>>>>>>
>>>>>>>
>>>>>>>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Edward Grajales Marmolejo 2021-02-23 17:50:30 Consulta
Previous Message kernel 2021-02-23 09:49:21 Re: sentencia copy a cliente