Programar tareas con pgAgent

por | Jun 1, 2017 | Bases de Datos | 7 Comentarios

Antes de ver como se programan tareas en pgAdmin debemos de instalar el componente pgAgent según se indican en las siguientes instruciones.

Una vez instalado el componente nos aparecerá un nuevo componente en la parte visual:

nuevo job pgAgent

 

Para su utilización solamente es necesario ir siguiendo los paso de configuración, aunque cabe tener en cuenta:

  • Si no queremos devolver nada en la función indicar void
  • Si vamos a devolver un valor hay que especificar el tipo de valor y en el código poner los RETURN que sean necesarios.

 

Ejemplo de creación de una tarea de inserción de un regustro en la tabla tb_promocion_joven

Crear función de inserción:

Crear la función a la que llamará el ajente

Crear la función a la que llamará el ajente

Definir el nombre de la función

Definir el nombre de la función

Incluir el código de la función

Incluir el código de la función

Codigo fuente que realiza la misma acción:

CREATE OR REPLACE FUNCTION ventas.add_promocion_joven()
 RETURNS void
 LANGUAGE 'sql'
 VOLATILE
 PARALLEL UNSAFE
 COST 100.0
 AS $function$INSERT INTO ventas.tb_promocion_joven(
 client_name, age, address, city, country, contact_email, phone)
 VALUES ('Prueba Agente', 10, 'Prueba Agente', 'Prueba Agente', 'Prueba Agente', 'Prueba Agente', 'Prueba Agente');$function$;

Crear el agente

Llamar a la creación del agente

Llamar a la creación del agente

Definir el nombre del agente

Definir el nombre del agente

Incluir sus pasos, teniendo en cuenta que se debe meter el codigo pulsando en el icono de editar

Describir sus pasos

nuevo-job-pgagent-paso7

Definir la programación de la tarea

Definir la programación de la tarea

Visualizar que el ajente a realizado el trabajo de forma correcta

Comprobar que la tarea se a ejecutado

Comprobar que la tarea se a ejecutado

7 Comentarios

  1. Edgar Vargas

    Diego Calvo, buenos días. Está muy bueno el ejemplo. Algo parecido a esto es lo que necesito. Yo tengo instalado pgAdmin III. Le agradecería me oriente cómo aplicaría este ejemplo en pgadmin III?

    Responder
    • Diego Calvo

      Buenas Edgar,
      Yo tengo instalados los dos gestores tanto pgAdmin 3 como el 4 y funcionan de forma simultanea, el uso de ambos es muy similar aunque cambian las intefraces ligeramente.

      Te oriento un poco como proceder:
      1.- Instalar el gestor de Job – PGAgent que puedes descargar de https://www.diegocalvo.es/instalacion-de-postgresql-9-6-pgadmin-4-en-mac-y-dbwrench/, se puede instalar de forma individual pero es mas sencillo desde el enlace que te indico.
      2. Una vez que lo instalas en el gestor de PGAdmin 3 y 4 debe aparecerte una nueva opción debajo de las bases de datos que tengas instaladas.
      3. Una vez que esto te salga seguir los pasos como te indico.

      Un saludo y espero haberte servido de ayuda.

      Responder
  2. Edgar Vargas

    Gracias Diego Calvo. Si, pgagent ya lo tengo instalado. El asunto es que la siguiente función:
    SELECT dblink_connect(‘miconexion’
    ,’hostaddr=185.15.999.99 port=11076 dbname=axio user=webadmin password=xxxxxP’);

    CREATE OR REPLACE FUNCTION edgar() RETURNS SETOF tabxter AS
    $BODY$
    DECLARE
    nit varchar;
    nom varchar;
    reg tabxter%rowtype;
    BEGIN
    FOR reg IN
    SELECT «TERCXNIT»,»TERCNOMB» FROM public.tabxter a
    LOOP
    RETURN NEXT reg;
    row of SELECT
    nit = reg.»TERCXNIT»;
    nom = reg.»TERCNOMB»;
    RAISE NOTICE ‘Registro nuevo para insertar en hosting %,%’,nit,reg.»TERCNOMB»;

    PERFORM dblink_exec(‘miconexion’,’INSERT INTO public.tabxter(«TERCXNIT»,»TERCNOMB») VALUES(»’||nit||»’,»’||nom||»’)’);
    insertado en hosting (%)’,reg1;

    END LOOP;
    –RETURN;
    END
    $BODY$
    LANGUAGE plpgsql;

    SELECT * FROM edgar();

    DEBO EJECUTARLA DIARIAMENTE EN LAS MAÑANAS. la función me trabaja perfectamente ejecutándola desde sql Editor. Pero no tengo la menor idea como insertarla en el job de pgadmin III.
    Soy nuevo en esto, quizás es muy sencillo pero por ahora lo veo un poco complicado.

    De antemano muchas gracias por su colaboración.
    So

    Responder
  3. carlos

    ya probe con los pasos y todo pero no veo que se ejecute en automatico
    si se ejecuta cuando le doy clic derecho en jobs y luego en Run Now de lo contrario no

    Responder
    • claudia

      Me pasa lo mismo :'(, alguien q nos pudiera orientar?

      Responder
  4. Tania

    Hola Diego. Anteriormente tenia instalado pgadmin 4, y me propuse a instalar pgagent. Pero al abrir mi pgadmin no logro visualizar el nodo de jobs. ¿Me podrías ayudar con alguna sugerencia para resolver?. Gracias!

    Responder
  5. Diego

    Hola Diego, Sabes si esto funciona para ejecutar un job construido en pentaho.
    Tengo mi repositorio almacenado en postgresql.

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada.