EXPLICACIÓN Y EJEMPLOS DEL MOTOR DE ALMACENAMIENTO CONNECT DE MARIADB
El motor de almacenamiento CONNECT de MariaDB permite acceder a datos externos (archivos, ODBC, otros servidores, XML, etc.) como si fueran tablas locales.Explicación y ejemplo
- . Formato del archivo CSV: Crear un fichero que sea "personas.csv", con el siguiente contenido, guardarlo en "/tmp/" o en cualquier ruta accesible por el usuario de MariaDB:
//Contenido de personas.csv //Separador: coma (,) //Primera fila: cabecera (nombres de columnas) //Campo fecha en formato DD/MM/YYYY id,nombre,edad,ciudad,fecha_nacimiento 1,Juan Pérez,28,Madrid,15/03/1998 2,María López,34,Barcelona,22/07/1990 3,Carlos Ruiz,19,Valencia,10/11/2006 4,Ana García,45,Sevilla,05/05/1981 - Creación de la tabla con CONNECT:
CREATE TABLE personas ( id INT, nombre VARCHAR(100), edadSMALLINT, ciudad VARCHAR(50), fecha_nacimiento DATE ) ENGINE=CONNECT TABLE_TYPE=CSV FILE_NAME='/tmp/personas.csv' HEADER=1 SEP_CHAR=',' QUOTED=1;- ENGINE=CONNECT → Usa el motor CONNECT
- TABLE_TYPE=CSV → Tipo de archivo CSV.
- FILE_NAME='/ruta/completa/people.csv' → Ruta absoluta al archivo (importante).
- HEADER=1 → La primera fila es cabecera (se ignora al leer).
- SEP_CHAR=',' → Separador de campos (puedes poner ';' si se usa punto y coma).
- QUOTED=1 → Los campos pueden ir entre comillas.
- Consultas de ejemplo:
-- Ver todos los registros SELECT * FROM personas; -- Consultas filtradas SELECT nombre, edad, ciudad FROM personas WHERE edad >= 30; -- Ordenar por edad SELECT * FROM personas ORDER BY edad DESC; -- Contar personas por ciudad SELECT ciudad, COUNT(*) as total FROM personas GROUP BY ciudad; -- Insertar un nuevo registro (se añade al final del CSV) INSERT INTO personas (id, nombre, edad, ciudad, fecha_nacimiento) VALUES (5, 'Laura Martínez', 31, 'Bilbao', '12/09/1994'); -- Actualizar (CONNECT permite UPDATE en CSV) UPDATE personas SET edad = 29 WHERE id = 1;
Otras consideraciones
- Si se quiere que MariaDB detecte automáticamente las columnas (sin definirlas manualmente):
CREATE TABLE personas_auto ENGINE=CONNECT TABLE_TYPE=CSV FILE_NAME='/tmp/people.csv' HEADER=1; - Indicar el separador:
SEP_CHAR=';' //el que se use en el csv - Si el CSV no tiene cabecera:
HEADER=0; - Como cambiar el fichero CSV
-- 1. Definir la ruta del archivo subido por el usuario SET @ruta_archivo = '/ruta/segura/uploads/usuario_12345.csv'; -- 2. Crear la sentencia dinámica con detección automática SET @sql = CONCAT( "CREATE OR REPLACE TABLE csv_upload ", "ENGINE=CONNECT ", "TABLE_TYPE=CSV ", "FILE_NAME='", @ruta_archivo, "' ", "HEADER=1 ", "SEP_CHAR=',' ", "QUOTED=1;" ); -- 3. Ejecutar la creación de la tabla PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;