Académique Documents
Professionnel Documents
Culture Documents
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
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.
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
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