Aqui un procedimiento bastante sencillo que permite sacar Backup de la Base de Datos en Postgres, claro esta utilizando un script en Bash.
#!/bin/sh
#
echo "---------- Captura fecha -----------"
fecha=`date +%Y%m%d%H%M`
#
echo "-------- Borra si existiera --------"
rm -f /home/postgres/backup/bk1$fecha.tar
rm -f /home/postgres/backup/bk2$fecha.tar
echo "---------- Haciendo pg_dump --------"
pg_dump -Ft -b cm_pan > /home/postgres/backup/bk1$fecha.tar
pg_dump -Ft -b cargom > /home/postgres/backup/bk2$fecha.tar
#
gzip /home/postgres/backup/bk1$fecha.tar
gzip /home/postgres/backup/bk2$fecha.tar
#
echo "----------- Final -------------"
Como complemento se debe de colocar en el crontab del usuario postgres para que se ejecute tantas veces sea necesario y asi sacar los Backups varias veces al dia.
jueves, 31 de enero de 2008
Postgres: Realizar backup de BD
Publicado por Marcelino Guerrero en 15:33 1 comentarios
miércoles, 30 de enero de 2008
Apagar a determinada hora un equipo con Linux
Es un proceso sencillo y muy basico, muchas veces he encontrado algunos datos no muy exacto o un poco enredados, utilizando algun script o pasando parametros.
La forma mas sencilla que encontre para apagar el equipo fue haciendo lo siguiente:
1.- Ingresar al crontab como root
crontab -e
2.- Agregar la linea de apagado:
00 22 * * * /sbin/shutdown -hF now
Con esto le decimos que se apague diariamente a las 10 de la noche o 22:00 hrs.
Publicado por Marcelino Guerrero en 22:40 0 comentarios
miércoles, 23 de enero de 2008
Función que escriba en letras una cantidad numérica
La siguiente función la recibí vía correo de una de las listas de Postgresql, si bien es cierto no la hice debo de señalar que si la enviaron a la lista se puede hacer publica, excelente función Ramiro Arenas
CREATE FUNCTION cletra(numeric) RETURNS character varying AS $_$
declare
ptotal alias for $1;
total numeric;
total1 numeric;
cent2 numeric;
cent numeric;
cent1 char(2);
mil numeric;
millon numeric;
millones numeric;
sav numeric;
unit numeric;
deci numeric;
centi numeric;
factor numeric;
sav1 numeric;
depesos numeric;
lletra varchar;
letras varchar;
begin
total := ptotal;
total1:= total;
total := trunc(total);
cent2 := total1 - total;
cent := cent2*100;
cent1 := '00';
if total=0 then
lletra := 'CERO PESOS';
return 'CERO PESOS';
end if;
mil:=0;
millon:=0;
millones:=0;
depesos:=0;
sav:=1;
unit:=1;
deci:=1;
centi:=1;
factor:=1;
sav1:=1;
letras:=' ';
while total > 0 loop
if total > 1999999 then
depesos := 1;
factor := 1000000;
millones := 1;
millon := 0;
else
if total > 999999 then
depesos := 1;
factor := 1000000;
millon := 1;
else
if total > 999 then
factor := 1000;
mil := 1;
else
factor := 1;
mil := 0;
end if;
end if;
end if;
sav := total;
total := trunc(total/factor);
sav := sav-(total*factor);
if sav = 0 then
depesos := 0;
end if;
centi:=TRUNC(total/100);
if centi = 0 then
letras := rtrim(letras)||' ';
end if;
if centi = 1 then
if total = 100 then
letras := rtrim(letras)||' CIEN';
else
letras := rtrim(letras)||' CIENTO';
end if;
end if;
if centi = 2 then
letras := rtrim(letras)||' DOSCIENTOS';
end if;
if centi = 3 then
letras := rtrim(letras)||' TRESCIENTOS';
end if;
if centi = 4 then
letras := rtrim(letras)||' CUATROCIENTOS';
end if;
if centi = 5 then
letras := rtrim(letras)||' QUINIENTOS';
end if;
if centi = 6 then
letras := rtrim(letras)||' SEISCIENTOS';
end if;
if centi = 7 then
letras := rtrim(letras)||' SETECIENTOS';
end if;
if centi = 8 then
letras := rtrim(letras)||' OCHOCIENTOS';
end if;
if centi = 9 then
letras := rtrim(letras)||' NOVECIENTOS';
end if;
total:=total - (centi*100);
deci :=trunc(total/10);
unit :=total-(deci*10);
if total >= 30 then
if deci = 3 then
letras := rtrim(letras)||' TREINTA';
end if;
if deci = 4 then
letras := rtrim(letras)||' CUARENTA';
end if;
if deci = 5 then
letras := rtrim(letras)||' CINCUENTA';
end if;
if deci = 6 then
letras := rtrim(letras)||' SESENTA';
end if;
if deci = 7 then
letras := rtrim(letras)||' SETENTA';
end if;
if deci = 8 then
letras := rtrim(letras)||' OCHENTA';
end if;
if deci = 9 then
letras := rtrim(letras)||' NOVENTA';
end if;
if unit > 0 then
letras := rtrim(letras)||' Y';
end if;
else
unit := total;
end if;
if unit = 0 then
letras := rtrim(letras)||' ';
end if;
if unit = 1 then
letras := rtrim(letras)||' UN';
end if;
if unit = 2 then
letras := rtrim(letras)||' DOS';
end if;
if unit = 3 then
letras := rtrim(letras)||' TRES';
end if;
if unit = 4 then
letras := rtrim(letras)||' CUATRO';
end if;
if unit = 5 then
letras := rtrim(letras)||' CINCO';
end if;
if unit = 6 then
letras := rtrim(letras)||' SEIS';
end if;
if unit = 7 then
letras := rtrim(letras)||' SIETE';
end if;
if unit = 8 then
letras := rtrim(letras)||' OCHO';
end if;
if unit = 9 then
letras := rtrim(letras)||' NUEVE';
end if;
if unit = 10 then
letras := rtrim(letras)||' DIEZ';
end if;
if unit = 11 then
letras := rtrim(letras)||' ONCE';
end if;
if unit = 12 then
letras := rtrim(letras)||' DOCE';
end if;
if unit = 13 then
letras := rtrim(letras)||' TRECE';
end if;
if unit = 14 then
letras := rtrim(letras)||' CATORCE';
end if;
if unit = 15 then
letras := rtrim(letras)||' QUINCE';
end if;
if unit = 16 then
letras := rtrim(letras)||' DIECISEIS';
end if;
if unit = 17 then
letras := rtrim(letras)||' DIECISIETE';
end if;
if unit = 18 then
letras := rtrim(letras)||' DIECIOCHO';
end if;
if unit = 19 then
letras := rtrim(letras)||' DIECINUEVE';
end if;
if unit = 20 then
letras := rtrim(letras)||' VEINTE';
end if;
if unit = 21 then
letras := rtrim(letras)||' VEINTIUNO';
end if;
if unit = 22 then
letras := rtrim(letras)||' VEINTIDOS';
end if;
if unit = 23 then
letras := rtrim(letras)||' VEINTITRES';
end if;
if unit = 24 then
letras := rtrim(letras)||' VEINTICUATRO';
end if;
if unit = 25 then
letras := rtrim(letras)||' VEINTICINCO';
end if;
if unit = 26 then
letras := rtrim(letras)||' VEINTISEIS';
end if;
if unit = 27 then
letras := rtrim(letras)||' VEINTISIETE';
end if;
if unit = 28 then
letras := rtrim(letras)||' VEINTIOCHO';
end if;
if unit = 29 then
letras := rtrim(letras)||' VEINTINUEVE';
end if;
if millones=1 then
letras := rtrim(letras)||' MILLONES';
millones := 0;
else
if millon=1 then
letras := rtrim(letras)||' MILLON';
millon := 0;
else
if mil=1 then
letras := rtrim(letras)||' MIL';
mil := 0;
end if;
end if;
end if;
total:=sav;
end loop;
if cent=0 then
cent1:='00';
else
cent1:=cast(cent as char(2));
end if;
if depesos=1 then
letras := rtrim(letras)||' DE PESOS '||cent1||'/100 M.C.';
else
letras := rtrim(letras)||' PESOS '||cent1||'/100 M.C.';
end if;
lletra := '('||ltrim(letras)||')';
return lletra;
end
$_$
LANGUAGE plpgsql;
Publicado por Marcelino Guerrero en 22:45 0 comentarios