Anda di halaman 1dari 15

Computacin Aplicada a la Minera

Uso de Bases de datos con Matlab

Cristian A. Soto Pinto

Introduccin
Matlab es una poderosa herramienta para hacer anlisis de datos e integra un amplio con junto de utilidades para conectarse a diversos orgenes de informacin, ya sea un dispositivo perifrico o una base de datos remota. Esta caracterstica es la que se buscar explotar en esta clase, donde se vern algunas de las herramientas elementales que nos ofrece Matlab para extraer y manipular la informacin contenida en una base de datos, en nuestro caso MySql.

Terminologa
Para referirnos a la estructura que contiene la informacin dentro de la base de datos, es necesario considerar la terminologa adecuada para no caer en confusin entre un atributo o el conjunto de estos.
Registro Tupla Fila

Atributo Columna Campo

Cundo se habla de una entidad que contiene la informacin, de por ejemplo personas un registro o tupla de nuestra tabla podra ser: (Juan, Perez Gonzales, 15.343.141-1, 23) y cada uno de estos elementos se denominan atributos o campos.

Terminologa
Query
Consulta hacia la base de datos, una consulta esta escrita en lenguaje SQL y se realiza para obtener informacin de la BD, modificar la informacin de la BD o cambiar aspectos estructurales de sta.

Lenguaje host
Es el lenguaje en el que se incrusta la consulta en SQL (anfitrin), ste realiza la solicitud o envo de informacin. En nuestro caso es Matlab el que recibe la informacin proveniente de la BD y hace, finalmente, uso de sta.

SGBD
Sistema de gestin de bases de datos, nos permite administrar y manipular bases de datos, su contenido y los mecanismos de acceso.

PHPMyAdmin
Sistema web basado en PHP que nos permite hacer uso de nuestro SGBD MySql de una manera grfica amigable.

Servidor
Es el equipo que aloja el SGBD y/o la bd, para permitir su acceso local o remoto, adems por lo general aloja un servidor web para sostener paginas web y as permitirnos, en nuestro caso, acceder a PHPMyAdmin.

Matlab como Host


Matlab soporta un amplio conjunto de conexiones a diferentes sistemas de bases de datos, en su versin 2008a tiene soporte para: IBM DB2, IBM Informix, Ingres, Microsoft Access, Microsoft Excel, Microsoft SQL Server, MySQL, Oracle, Postgre SQL, Sybase SQL Anywhere, Sybase SQL Server Para que Matlab pueda establecen una conexin a estos sistemas se debe hacer uso de un driver que acta como interfaz. Matlab en su versin 2008a soporta el driver ODBC (Open Database Connectivity) y el driver JDBC (Sun Java Database Connectivity).

Matlab como Host


Matlab invoca el driver JDBC para establecer la conexin con MySQL y as, ste pueda interpretar las SQL Querys, gracias a los que se puede enviar y recibir la informacin a nuestra BD. Para realizar la conexin es necesario especificar los parmetros para acceder a nuestra BD en el SGBD, los parmetros para el driver y la ruta al .jar del conecctor.

MySQL
Para MySQL es transparente la solicitud de informacin, independiente de si la solicitud se ejecuta desde un sistema web, desde la consola, desde Matlab o desde otro lenguaje anfitrin, la consulta llega de la misma manera y la informacin es entregada siempre con el mismo mecanismo gracias al conector. En caso de ocurrir un error MyQSL enva mensajes de error que pueden ser interpretados en el lenguaje anfitrin. Los parmetros especificados para la conexin con MySQL especifican si es una conexin remota o es el mismo equipo. MySQL como servidor debe estar siempre operativo para recepcionar las solicitudes, ni Matlab ni el conector levantan el servicio de MySQL.

Conexin
Una conexin de base de datos permite que el software cliente pueda comunicarse con el software de base de datos del servidor, ya sea en la misma mquina o no. Se necesita una conexin abierta y disponible para enviar comandos y recibir respuestas, y dado que algunos motores DBMS tienen un nmero limitado de conexiones, por los recursos que estas consumen, es que se debe siempre cerrar una conexin una vez se ha dejado de usar. Para crear una conexin en Matlab se debe contar, primero, con los parmetros del driver, los cuales especifican que tipo de driver se usar y a que base de datos apuntar. Adems se debe contar con el archivo del conector (.jar) y con las credenciales que nos permiten hacer uso de la BD (nombre de usuario y contrasea).

Conexin
host = 'localhost'; user = 'root'; password = 'miclave'; dbName = 'pruebas_db';
Nombre del servidor Credenciales Nombre de la BD Parmetros del driver Ruta al conector

jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbName); jdbcDriver = 'com.mysql.jdbc.Driver'; javaaddpath('C:\mysql-connector-java-5.1.6-bin.jar')

dbConn = database(dbName, user , password, jdbcDriver, jdbcString);


Creacin del objeto conexin

Consultar informacin
Una vez establecida la conexin se puede solicitar informacin gracias al lenguaje SQL, la funcin de Matlab que nos permite hacer esto es fetch, la que recibe como parmetros el objeto de conexin y la consulta SQL. Esta funcin retorna una matriz de celdas que contiene el resultado de la consulta.
result = fetch(dbConn, 'SELECT * FROM mantenciones');

Una vez la consulta se ha realizado la matriz result puede operarse como cualquier otra variable dentro de Matlab. Como sta es una matriz de celdas es necesario trabajar sus elementos con llaves {} para poder hacer operaciones sobre los datos.

Modificar informacin
Las operaciones UPDATE, ISERT y DELETE que no retornan datos se ejecutan con la funcin de Matlab exec, la que recibe como parmetros el objeto de conexin y la Query SQL. En el ejemplo a continuacin como la Query lleva comillas simples en los datos de entrada y como Matlab tiene sus propias comillas por ser la Query un string, se deben poner 2 comillas(2 comillas simples o comillas dobles)
exec(dbConn, 'INSERT INTO personal (RUT,NOMBRES,APELLIDOS) VALUES(''15994945'','Juanito '','Perez Gonzales'')');

Validar conexin
Para validar que la conexin fue efectuada de manera exitosa , Matlab incluye la funcin isconnection, la que recibe como parmetro el objeto conexin y retorna verdadero si la conexin esta disponible y retorna falso si se produjo un error en ella o sta se encuentra cerrada. En el ejemplo a continuacin se obtiene la informacin de la tabla mantenciones si la conexin ha sido exitosa y si no, se muestra el mensaje de error. if isconnection(dbConn) result = fetch(dbConn, 'SELECT * FROM mantenciones'); disp(result); else disp(sprintf('Connection failed: %s', dbConn.Message)); end Una vez se ha terminado de realizar las operaciones en la base de datos se cierra la conexin

close(dbConn);

Ejemplo completo
host = 'localhost'; user = 'root'; password = 'fardos'; dbName = 'pruebasmineria'; jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbName); jdbcDriver = 'com.mysql.jdbc.Driver'; javaaddpath('C:\mysql-connector-java-5.1.6-bin.jar') dbConn = database(dbName, user , password, jdbcDriver, jdbcString); if isconnection(dbConn) result = fetch(dbConn, 'SELECT * FROM mantenciones'); disp(result); else disp(sprintf('Connection failed: %s', dbConn.Message)); End close(dbConn);

result = [1101] [1] '2011-09-07' [1212] [15994945] [1102] [2] '2011-08-07' [1017] [15994945]

Otro ejemplo
host = 'localhost'; user = 'root'; password = 'fardos'; dbName = 'pruebasmineria'; jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbName); jdbcDriver = 'com.mysql.jdbc.Driver'; javaaddpath('C:\mysql-connector-java-5.1.6-bin.jar') dbConn = database(dbName, user , password, jdbcDriver, jdbcString); If isconnection(dbConn) Query = 'SELECT mes, tonelada FROM produccion WHERE agno = 2004; result = fetch(dbConn, Query); meses=char(result(:,1)); %Todos los meses de cell a string valores = cell2mat(result(:,2)); %Todos los valores de produccin de cell a numero plot(valores) set(gca,'XTick',1:12) Set(gca,'XTickLabel',meses) else disp(sprintf('Connection failed: %s', dbConn.Message)); End close(dbConn); Grafica los resultados por cada mes. Selecciona la produccin de cada mes del ao 2004

Otro ejemplo
Resultado:
10 x 10
4

enero

febrero

marzo

abril

mayo

junio

julio

agsto

septiembre

octubre

noviembre

diciembre

Anda mungkin juga menyukai