Entries for SQL

Volcar un archivo MDB en un fichero SQLite

written by uve

24 October 2011

Esta mañana contaba cómo extraer el esquema y datos de un archivo MS Access y ahora voy a poner un pequeño script que nos permita volcar todo el contenido directamente en una base de datos SQLite:

#!/bin/bash
MDB=fichero_access.mdb
DB=fichero_sqlite.db
TMPFILE=tmp.sql
echo "Extracting the schema"
mdb-schema $MDB > $TMPFILE
sed -e "s/^DROP TABLE\(.*\);/DROP TABLE IF EXISTS\1;/" -e "s/DateTime (.*)/DateTime/" $TMPFILE > schema.sql
echo "Creating SQLite DB"
sqlite3 $DB < schema.sql
echo "Extracting tables"
tables=`mdb-tables $MDB`
echo ""
for table in $tables
do
echo "Table: $table"
mdb-export -I -S $MDB $table > $TMPFILE
echo "PRAGMA journal_mode = MEMORY;" > table_$table.sql
sed -e "s/\(.*\)/\1;/" $TMPFILE >> table_$table.sql
	sqlite3 $DB < table_$table.sql
done
rm -f $TMPFILE

Full entry >>

Extraer el esquema y datos de un archivo MS Access

written by uve

24 October 2011

Hoy me he encontrado con un fichero .mdb del que necesito la información que contiene. Tengo que hacer uso, tanto de la estructura como las tuplas de información que contiene cada una de las tablas.

Tras un rato de buscar, he encontrado MDB Tools. Éstas son un conjunto de herramientas que nos permiten trabajar con estos archivos desde la línea de comandos. Así que he hecho este pequeño scrpit:

#!/bin/bash
DATABASE=archivo_access.mdb
mdb-schema $DATABASE > schema.sql
tables=`mdb-tables $DATABASE`

for table in $tables
do
    mdb-export -I -S $DATABASE $table > table_$table.sql
done

Full entry >>

Jugando con SQLite3 y Python

written by uve

2 March 2011

Aunque hay muchos ejemplos por ahí, ahora me toca a mi poner uno :) Básicamente he hecho un pequeño wrapper sobre SQLite3 para almacenar información de forma persistente. La idea es muy simple: vamos a gestionar una lista de nodos (dirección MAC y dirección lógica).

La clase con la que vamos a trabajar es la siguiente:

class Node:
    def __init__(self, mac, address):
        self.mac = mac
        self.address = address

Full entry >>

Elixir, una capa de abstracción sobre SQLAlchemy

written by uve

1 November 2010

Elixir es un proyecto que trata de reemplazar la extensión declarative de SQLAlchemy, y la verdad es que merece la pena tenerlo en consideración. Voy a poner un ejemplo de como utilizar Elixir, siguiendo la línea de los dos artículos anteriores.

Full entry >>

Jugando con SQLAlchemy II

written by uve

1 November 2010

Lo que acabo de explicar nos permite trabajar directamente sobre SQLAlchemy, cono todo lo que ello conlleva. Pero tenemos otra posibilidad, trabajar como un ORM puramente. Para ello, SQLAlchemy ofrece una extensión, en el paquete ext.

Full entry >>

Jugando con SQLAlchemy

written by uve

1 November 2010

Hace ya tiempo que escuché hablar de SQLAlchemy. Para quién no lo conozca, es un toolkit para SQL y posee un ORM. SQLAlchemy es una capa abstracción para la construcción y manipulación de expresiones SQL, pero nos permite mapear de una forma sencilla a objetos Python y funcionar como un ORM.

Full entry >>

Como hacer copias de seguridad en PostgreSQL

written by uve

19 June 2010

Ahora vamos a ver como realizar copias de seguridad de una base de datos en PostgreSQL. Para ello existe un comando que se llama pg_dump que nos permite hacer un volcado de una base de datos a un fichero, para posteriormente restaurarlo. La sintaxis básica es:

pg_dump [opciones] [base de datos]

Full entry >>

Obtener claves autogeneradas en una consulta

written by uve

3 May 2010

Supongamos la siguiente situación. Tenemos una tabla en la que la clave primaria es un identificador auto incremental. En mi caso,utilizando MySQL ( por obligación :), la tabla sería la siguiente:

CREATE TABLE `tableName`
(
    `id` INT NOT NULL auto_increment,
    `name` VARCHAR(20),
    PRIMARY KEY(`id`)
);

El problema es independiente del Sistema Gestor de Bases de Datos (SGBD) ya que estoy trabajando a través de JDBC, pero la creación de la tabla si puede diferir en función del que se esté utilizando.

Ahora realizamos una nueva inserción, pero ¿cuál es el identificador que el SGBD ha asignado a la tupla?

Full entry >>

Configurar SQLDeveloper para la ETSIIT

written by uve

17 March 2010

Quien hemos hecho prácticas para Base de Datos, Sistema de Bases de Datos o Modelos Avanzados de Bases de Datos nos hemos encontrado con el problema de trabajar/repasar las prácticas fuera del aula de prácticas. La opción que proponen es instalar Oracle XE en nuestro ordenador, lo cual no me termina de convencer. La opción por la que yo opté es SQLDeveloper.

Full entry >>

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.