Importación y Exportación de Datos en MySQL con Ejemplos Prácticos

En este artículo, exploraremos cómo manejar la importación y exportación de datos en MySQL, junto con operaciones comunes de gestión de registros. Utilizaremos ejemplos de código modificados para ilustrar los conceptos.

  1. Importación de Datos

Para importar datos desde un archivo en el servidor, primero debemos configurar el directorio permitido. La variable de sistema secure_file_priv restringe las operaciones de archivo a un directorio específico, lo cual es crucial para la seguridad.


-- Verificar la configuración del directorio seguro
SHOW VARIABLES LIKE "secure_file_priv";

-- Resultado esperado:
-- +------------------+-------------------+
-- | Variable_name    | Value             |
-- +------------------+-------------------+
-- | secure_file_priv | /var/mysql/data/  |
-- +------------------+-------------------+

Supongamos que queremos importar datos de un archivo CSV en una tabla llamada empleados. Primero, creamos la tabla con una estructura diferente:


CREATE TABLE ejemplo.empleados (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(50),
    salario DECIMAL(10,2),
    departamento VARCHAR(30),
    fecha_ingreso DATE
);

A continuación, cargamos datos desde un archivo con delimitadores personalizados:


-- Preparar el archivo (por ejemplo, empleados.csv en el directorio seguro)
LOAD DATA INFILE "/var/mysql/data/empleados.csv"
INTO TABLE ejemplo.empleados
FIELDS TERMINATED BY ";"
LINES TERMINATED BY "\n"
IGNORE 1 LINES; -- Ignorar encabezado si existe
  1. Exportación de Datos

La exportación permite guardar resultados de consultas en archivos. Usamos la cláusula INTO OUTFILE con delimitadores configurables.


-- Exportar datos de empleados con salario mayor a 30000
SELECT nombre, salario, departamento
INTO OUTFILE "/var/mysql/data/export_salarios.txt"
FIELDS TERMINATED BY "|"
LINES TERMINATED BY "\n"
FROM ejemplo.empleados
WHERE salario > 30000;

También podemos exportar resultados con formatos más complejos:


-- Exportar con delimitadores múltiples
SELECT nombre, departamento
INTO OUTFILE "/var/mysql/data/departamentos.txt"
FIELDS TERMINATED BY "::"
LINES TERMINATED BY "||"
FROM ejemplo.empleados
WHERE departamento IN ('Ventas', 'TI');
  1. Gestión de Registros

Veamos ejemplos de manipulación de datos, incluyendo inserción, consulta, actualización y eliminación.

3.1 Inserción de Datos

Podemos insertar múltiples registros con un solo comando:


INSERT INTO ejemplo.empleados (nombre, salario, departamento, fecha_ingreso)
VALUES
    ('Ana García', 45000.50, 'Ventas', '2023-01-15'),
    ('Carlos López', 38000.00, 'TI', '2022-11-20'),
    ('María Pérez', 42000.75, 'Marketing', '2023-03-10');

3.2 Consultas con Condiciones

Utilizamos operadores y funciones para filtrar datos:


-- Consulta con operadores lógicos
SELECT nombre, salario
FROM ejemplo.empleados
WHERE salario >= 40000 AND departamento != 'TI';

-- Uso de IN para múltiples valores
SELECT nombre, departamento
FROM ejemplo.empleados
WHERE departamento IN ('Ventas', 'Marketing', 'Finanzas');

-- Consulta con LIKE y comodines
SELECT nombre
FROM ejemplo.empleados
WHERE nombre LIKE 'A%'; -- Nombres que empiezan con 'A'

3.3 Expresiones Regulares

La cláusula REGEXP permite patrones complejos:


-- Buscar nombres con caracteres específicos
SELECT nombre
FROM ejemplo.empleados
WHERE nombre REGEXP '^[A-C]'; -- Nombres que empiezan con A, B o C

-- Buscar departamentos con patrones
SELECT nombre, departamento
FROM ejemplo.empleados
WHERE departamento REGEXP 'TI|Ventas'; -- Departamentos 'TI' o 'Ventas'

3.4 Funciones Agregadas y Agrupación

Calculamos estadísticas y agrupamos resultados:


-- Calcular promedio de salarios por departamento
SELECT departamento, AVG(salario) AS promedio_salario
FROM ejemplo.empleados
GROUP BY departamento;

-- Contar empleados y encontrar salario máximo
SELECT COUNT(*) AS total_empleados, MAX(salario) AS salario_maximo
FROM ejemplo.empleados;

3.5 Actualización y Eliminación

Modificamos o borramos reigstros según condiciones:


-- Actualizar salarios con cálculos
UPDATE ejemplo.empleados
SET salario = salario * 1.10  -- Aumentar 10%
WHERE departamento = 'Ventas';

-- Eliminar registros con condiciones
DELETE FROM ejemplo.empleados
WHERE fecha_ingreso < '2022-01-01';

3.6 Ordneamiento y Limitación

Organizamos los resultados y controlamos el número de filas:


-- Ordenar por salario descendente y limitar resultados
SELECT nombre, salario
FROM ejemplo.empleados
ORDER BY salario DESC
LIMIT 5;

Etiquetas: MySQL SQL Data Import Data Export Database Management

Publicado el 7-7 23:09