Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Tarea programada en Linux con Firebird 2.5 (https://www.clubdelphi.com/foros/showthread.php?t=67384)

Axel_Tech 14-04-2010 17:59:27

Tarea programada en Linux con Firebird 2.5
 
Hola a todos, tengo un servidor con Firebird 2.5 bajo Linux (Ubuntu) y me gustaría que al final de la jornada se ejecutara un update para actualizar los datos de una tabla. Ya sé que Firebird por sí solo como motor de base de datos no contempla esto, pero se me había ocurrido crear un crontab que ejecute un .sh por ejemplo que haga el update. El problema es no tengo ni idea de como crear este .sh, como decirle la ruta de la base de datos y demás.
A ver si alguien se ha encontrado con una situación parecida y puede orientarme un poco.

Gracias anticipadas :)

Casimiro Notevi 14-04-2010 19:37:48

Puedes llamar al script sql desde la utilidad de línea de comandos isql, que está en el directorio 'bin' de firebird
Ejemplo, creas un script update.sql donde metes las actualizaciones que quieras hacer, sql, por supuesto, algo así:

fichero tuupdate.sql
Código:

connect /mnt/datos/mibasedato.fdb user sysdba password masterkey;
update tbhistorial set ..... ;
insert into tbacumulados values ......;
etc.

Ahora creas un script para que lo ejecute:

tuscript.sh
Código:

#!/bin/sh
/opt/firebird/bin/isql parametros varios  -i tuupdate.sql

y finalmente lo programas para que se ejecute cuando quieras, con el crontab, aquí tienes una guía muy clara y sencilla.
Código:

# lo siguiente se ejecutaría cada hora, en el minuto 0
0 * * * * /home/tuusuario/tuscript.sh
#
# lo siguiente se ejecutaría los día 15 de cada mes
* * 15 * * /home/tuusuario/tuscript.sh

Y aquí tienes una guía de los parámetros de isql

Axel_Tech 15-04-2010 09:01:59

Muchas gracias Casimiro, me ha quedado bastante claro, pero al ponerme manos a la obra me acabo de dar cuenta que he pasado un detalle por alto: necesito que el UPDATE lleve la fecha de hoy en el WHERE (para actualizar los registros de hoy). ¿Podría meter en el archivo .sql en la línea del UPDATE la fecha? ¿Esto funcionaría?:
Código SQL [-]
UPDATE TABLA SET CAMPO = 1 WHERE FECHA = CURRENT_DATE

Casimiro Notevi 15-04-2010 13:34:35

Claro, si es una instrucción sql, tiene que funcionar :)

Axel_Tech 15-04-2010 19:14:43

Una vez más me quito el sombrero, funciona todo a la perfección :) mil gracias Casimiro!!!

Casimiro Notevi 15-04-2010 19:25:40

Me alegro :)

papulo 16-04-2010 18:52:16

Otra opción sencilla, es crear un script de PHP que te lo haga y ejecutarlo desde cron con wget -e -q /var/www/sript.php

Funciona.

PD: Si me he explicado mal, es porque hablo de memoria.


La franja horaria es GMT +2. Ahora son las 18:19:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi