Para realizar un respaldo de alguna base de datos en PostgreSQL se utiliza el comando pg_dump.
Les voy a compartir un pequeño pero útil script en bash para respaldar nuestra base de datos de forma automática y por fechas.
Lo primero que debemos hacer es crear una carpeta por ejemplo llamada “respaldos” y dentro de ahí, crearemos 7 carpetas más, con el nombre de los días de la semana, ejemplo: dom, lun, mar, mie, jue, vie, sab.
Ahora creamos el script:
#!/bin/bash DB="shop" DIA_ACTUAL=`date +%a` FECHA_ACTUAL=`date +%Y-%m-%d` HORA_ACTUAL=`date +%H:%M` ARCH_RESP="$FECHA_ACTUAL--$HORA_ACTUAL" DIR_RESP="/home/antonio/respaldo" pg_dump -o -f $DIR_RESP/$DIA_ACTUAL/$DB-$ARCH_RESP.sql shop
Lo único que tienen que cambiar, es la variable DB, ahí va el de su base de datos y en la variable DIR_RESP va la ruta en tu carpeta resplados, con ésto cada vez que se ejecute dicho script, se creará un archivo llamado:
shop-2008-12-12–13:31.sql
Y lo pondrá en su respectiva carpeta deacuerdo al día, éste script lo puedes poner en la carpeta /etc/cron.daily para que se ejecute cada día.
June 28, 2009 | Etiquetado en: | No Comments 
Al momento de desarrollar una aplicación con base de datos, se debe tomar en cuenta la seguridad del mismo, uno de los ataques más comunes es el sql injection que consta básicamente de introducir código sql en cajas de texto de nuestro sistema con el fin de introducirse ó sacar información.
Un ejemplo de sql injection sería el siguiente:
<?php
// Consultar la base de datos para verificar si hay una coincidencia de usuario
$consulta = "SELECT * FROM usuarios WHERE usuario='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($consulta);
//Supongamos que el usuario tecleó ' OR ''=' en el campo de password:
$_POST['username'] = 'admin';
$_POST['password'] = "' OR ''='";
// Esto quiere decir que la consulta enviada a MySQL seria:
echo $consulta;
?>
La variable $consulta contendría:
SELECT * FROM usuarios WHERE usuario='aidan' AND password='' OR ''=''
Esto permitiría a cualquier usuario ingresar al sistema sin password.
Para realizar una consulta segura, utilizaremos 2 funciones mysql_real_escape_string y sprintf, se pudiera resolver también modificando la configuración del php para no permitir caracteres especiales, pero ésto sería una desventaja, ya que no permitiría la portabilidad del código.
<?php
// Conexion
$enlace = mysql_connect('mysql_host', 'mysql_usuario', 'mysql_contraseña')
OR die(mysql_error());
//Consulta segura
$query = sprintf("SELECT * FROM libros WHERE autor='%s'", mysql_real_escape_string($autor_nombre));
mysql_query($query);
?>
Ojo, si no hay una conexión con el servidor, la función mysql_rea_space_string marcará un error.
En caso de una consulta de logeo:
<?php
// Función para eliminar "/" y añadir comillas
function comillas_inteligentes($valor)
{
// Retirar las barras
if (get_magic_quotes_gpc()) {
$valor = stripslashes($valor);
}
// Colocar comillas si no es entero
if (!is_numeric($valor)) {
$valor = "'" . mysql_real_escape_string($valor) . "'";
}
return $valor;
}
// Conexion
$enlace = mysql_connect('mysql_host', 'mysql_usuario', 'mysql_contraseña')
OR die(mysql_error());
//consulta segura
$consulta = sprintf("SELECT * FROM usuarios WHERE usuario=%s AND password=%s",
comillas_inteligentes($_POST['username']),
comillas_inteligentes($_POST['password']));
mysql_query($consulta);
?>
May 22, 2009 | Etiquetado en: | 1 Comment Este el el código para realizar una conexión en ruby con el motor de base de datos PostgreSQL.
#!/usr/bin/env ruby
require 'postgres'
conn = PGconn.connect("localhost", 5432, '', '', "test", "myid", "mypass")
res = conn.exec('select tablename, tableowner from pg_tables')
res.each do |row|
row.each do |column|
print column
(20-column.length).times{print " "}
end
puts
end
February 25, 2009 | Etiquetado en: | No Comments Ahora les voy a mostrar un pequeño ejercicio para trabajar con mono y el motor de base de datos PostgreSQL, si aún no tienes instalado Postgre ni mono puedes visitar estos tutoriales:
Instalación PostgreSQL, Comenzando con mono.
Para comenzar nos descargaremos la dll necesaria para trabajar con PostgreSQL en .NET, Npgsql.dll.
Ahora en monodevelop, creamos un proyecto nuevo en C# a modo consola, ahora del lado derecho donde dice Referencias, damos click derecho y seleccionamos Editar preferencias, una vez ahí, seleccionamos la dll y la añadimos al proyecto.

Para continuar, necesitamos crear una base de datos en postgre, podemos empezar con una tabla pequeña, para el ejercicio, hice una base de datos llamada ejercicio, con una tabla llamada usuarios que solamente contiene 3 campos, id, nombre y apellido.
Ahora entraremos a la parte de la programación, antes que nada, necesitamos agregar la librería necesaria al proyecto:
using Npgsql;
Enseguida crearemos algunos métodos de conectar, ejecutar y desconectar, para reducir código:
Método conectar()
namespace conexion
{
class Postgre
{
public NpgsqlConnection dbcon; //Variable pública del tipo NpgsqlConnection
public void conectar() //Método conectar
{
string con = "Server=127.0.0.1;"+
"Port=5432;"+
"User Id=tu_usuario;"+
"Password=tu_password;"+
"Database=ejercicio;"; //Cadena para la conexión, modificar según tu user y password.
dbcon = new NpgsqlConnection(con);
dbcon.Open();
}
Método ejecutar(string query)
public void ejectuar(string query)
{
NpgsqlCommand command = dbcon.CreateCommand();
command.CommandText = query;
command.ExecuteReader();
}
Método Main()
public static void Main(string[] args)
{
try{
Postgre conexion;
conexion = new Postgre();
conexion.conectar();
Console.WriteLine("Conexión exitosa");
string query = "INSERT INTO usuarios VALUES ('C01','Juan','Perez');";
conexion.ejectuar(query);
Console.WriteLine("Se ingreso el dato satisfactoriamente");
Console.WriteLine("Visita http://www.antoniomtz.org");
}
catch(NpgsqlException error)
{
string mensaje = error.Message;
Console.WriteLine(mensaje);
}
}
Aquí les dejo el código completo : Conexión.
Espero y les haya servidor, saludos.
February 21, 2009 | Etiquetado en: | 1 Comment
Todos los derechos reservados. Tecnologia.