MySQL permite importar y exportar datos en formatos CSV y JSON, aunque el soporte para JSON como formato de archivo externo es limitado comparado con CSV. A continuación te explico cómo trabajar con ambos tipos de archivos.
LOAD DATA
LOAD DATA INFILE '/ruta/al/archivo.csv'
INTO TABLE nombre_tabla
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(columna1, columna2, columna3);
El archivo debe estar accesible desde el servidor MySQL o debes usar LOCAL
si lo estás subiendo desde tu máquina:
LOAD DATA LOCAL INFILE 'archivo.csv' ...
Debes tener activado secure_file_priv
o configurado adecuadamente.
SELECT ... INTO OUTFILE
SELECT columna1, columna2
INTO OUTFILE '/ruta/salida.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM nombre_tabla;
MySQL no tiene un comando directo como LOAD DATA
para JSON. Pero puedes usar una herramienta externa (como Python o MySQL Shell) o procesar el contenido con SQL una vez insertado.
Ejemplo con MySQL Shell (modo JS):
util.importJson('archivo.json', {schema: 'mi_bd', table: 'mi_tabla'});
MySQL soporta el tipo de datos JSON
desde la versión 5.7:
CREATE TABLE productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100),
detalles JSON
);
Insertar datos:
INSERT INTO productos (nombre, detalles)
VALUES ('Laptop', '{"marca": "Dell", "especificaciones": {"ram": "16GB", "cpu": "i7"}}');
Consultar datos dentro del JSON:
SELECT
detalles->>'$.marca' AS marca,
detalles->'$.especificaciones'.'ram' AS ram
FROM productos;
Ejemplo completo de cómo crear una tabla con un campo JSON, insertar registros y cómo consultarlos adecuadamente en MySQL (5.7+ o superior):
CREATE TABLE empleados (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
datos_contacto JSON
);
INSERT INTO empleados (nombre, datos_contacto)
VALUES
('Ana Pérez', JSON_OBJECT('email', '[email protected]', 'telefono', '123456789')),
('Carlos López', '{
"email": "[email protected]",
"telefono": "987654321",
"direccion": {
"calle": "Av. Principal 123",
"ciudad": "Madrid"
}
}');
Obtener el email y ciudad (si existe la dirección):
SELECT
nombre,
datos_contacto->>'$.email' AS email,
datos_contacto->'$.direccion'.'ciudad' AS ciudad
FROM empleados;
->
accede a un valor JSON como objeto JSON.->>'$.campo'
accede a un valor JSON como cadena de texto (string).IS JSON
o funciones como JSON_VALID()
.SELECT nombre
FROM empleados
WHERE JSON_EXTRACT(datos_contacto, '$.telefono') = '123456789';
Este enfoque es útil cuando necesitas almacenar estructuras flexibles o anidadas, como preferencias, configuraciones, o contactos complejos por usuario.
Follow GPT creator profile on LinkedIn https://linkedin.com/in/khanukov/
mysqlimport
, MySQL Workbench, o scripts en Python.–