Hola nuevamente Alberto, Entiendo que Hellmuth lo que te describe es un posible escenario de como resolver tu problemática,  en la documentación del FDW se describe que puedes lograr con un FDW en PostgreSQL y creo que te lo hemos descrito aquí de una forma u otra, como resolver tu caso, aquí vamos nuevamente:

-crea en tu servidor local una tabla foránea con la estructura de tu tabla en el servidor externo(que es la misma que retorna tus datos procesados de tu funcion, [segun entiendo]) (para crear tu tabla foránea debes crear el server y user mapping previamente)


luego haces algo como esto para insertar tus datos (insertar en tu tabla foranea local, los datos de tu query ):

-insert into tabla_foranea_que_apunta_a_tabla_servidor_externo select * from tu_funcion_procesadora_de_datos() [o tu query, asegúrate que retorna la misma estructura de tu tabla]

tu tabla foranea local apuntará a tu tabla en el servidor externo e insertará los datos allá

Saludos


On 29/01/18 17:14, Alberto Cardenas Cardenas wrote:
Gracias Hellmuth, pero no funciona lo que me indicas.

Lo que necesito es que datos que tengo en mi servidor local, puedan ser insertados en un servidor externo con postgresql tambien en una tabla con cierta estructura

El 29 de enero de 2018, 15:36, Hellmuth Vargas <hiv...@gmail.com <mailto:hiv...@gmail.com>> escribió:


    Hola Alberto

    con postgres_fdw se puede inserta en una tabla remota


    -- en el servidor remoto:
    CREATE  TABLE remota(id int, texto text, fecha timestamp);

    -- no olvidar registrar en el pg_hba.conf


    -- en el servidor local


    CREATE EXTENSION postgres_fdw;


    CREATE SERVER postgresqlserver FOREIGN DATA WRAPPER postgres_fdw;



    CREATE SERVER postgresql_server
            FOREIGN DATA WRAPPER postgres_fdw
            OPTIONS (host '192.168.XX.YY', port '5432', dbname
    'bd_remota');


    CREATE USER MAPPING FOR 'user_local'
            SERVER postgresql_server
            OPTIONS (user 'user_remoto', password 'pass_remoto');



    CREATE FOREIGN TABLE foreign_table (
            id int, texto text, fecha timestamp
    )
            SERVER postgresql_server
            OPTIONS (schema_name 'public', table_name 'remota');


    INSERT INTO foreign_table(id,texto,fecha) VALUES(1,'a',now());
    INSERT INTO foreign_table(id,texto,fecha) VALUES (2,'b',now());
    INSERT INTO foreign_table(id,texto,fecha) VALUES (3,'c',now());




    El 29 de enero de 2018, 14:24, Anthony
    Sotolongo<asotolo...@gmail.com <mailto:asotolo...@gmail.com>>
    escribió:

        Hola Alberto,


        On 29/01/18 16:15, Alberto Cardenas Cardenas wrote:
        Hola Hellmuth, no me sirve eso porque lo que necesito
        insertar es el resultado de unas querys en la tabla remota,
        no los mismos datos de la tabla origen, lo que debo insertar
        son datos procesados obtenidos desde una funcion local
        ya esto cambia un poco de tu escenario inicial donde se
        entendía  que (las tablas eran la misma en ambos servidores ) :
        insert into <tabla_remota>
        select * from <tabla_local>

        pero bueno si lo que necesitas es un resultado procesado de
        una función, igual te ajusta el FDW, crea una tabla foránea en
        el local con la estructura que te devuelve esos datos
        procesados de tu función, donde esa tabla apunte en tu
        definición a la tabla remota e inserta en esa tabla foranea
        local y ella misma se hara cargo de enviártelos al remoto.


        Saludos




        Saludos

        El 29 de enero de 2018, 15:07, Hellmuth Vargas
        <hiv...@gmail.com <mailto:hiv...@gmail.com>> escribió:

            Hola Lista

            dado que  esta empleando PostgreSQL 9.6 puede  hacer uso
            de  postgres_fdw

            https://www.postgresql.org/docs/9.6/static/postgres-fdw.html
            <https://www.postgresql.org/docs/9.6/static/postgres-fdw.html>

            "F.33.1.5. Updatability Options
            By default all foreign tables using postgres_fdw are
            assumed to be updatable. This may be overridden using the
            following option:

            updatable
            This option controls whether postgres_fdw allows foreign
            tables to be modified using *INSERT*, UPDATE and DELETE
            commands. It can be specified for a foreign table or a
            foreign server. A table-level option overrides a
            server-level option. The default is true."


            El 29 de enero de 2018, 14:00, Alberto Cardenas
            Cardenas<alberto.cardenas.c...@gmail.com
            <mailto:alberto.cardenas.c...@gmail.com>> escribió:

                Estimada Lista:

                Tengo el siguiente problema, necesito insertar datos
                desde una tabla local a una base de datos que esta en
                otro servidor, la tabla es la misma en ambos
                servidores, ambos motores son postgresql 9.6.

                Los datos que debo insertar son el resultado de un
                select. He estado leyendo que lo puedo hacer con
                dblink_exec, pero no se como hacerlo. Yo uso dblinks,
                para consultar datos entre distindas bases de datos,
                pero insertar de una base local a otra remota, no se
                como hacerlo.

                en el fono lo que debo hacer es lo siguiente;

                insert into <tabla_remota>
                select * from <tabla_local>


                Les agradeceríamucho si alguien me pudiera ayudar con
                mi problema


                Saludos Cordiales

                Alberto




-- Cordialmente,

            Ing. Hellmuth I. Vargas S.
            Esp. Telemática y Negocios por Internet
            Oracle Database 10g Administrator Certified Associate
            EnterpriseDB Certified PostgreSQL 9.3 Associate






-- Cordialmente,

    Ing. Hellmuth I. Vargas S.
    Esp. Telemática y Negocios por Internet
    Oracle Database 10g Administrator Certified Associate
    EnterpriseDB Certified PostgreSQL 9.3 Associate



Reply via email to