Importar datos desde CMD (MySQL)

Para evitar algunos intermediarios que pueden dar problemas a la hora de importar algunos datos (como por ejemplo phpMyAdmin, que tiene tiempos de ejecución limitados, o tamaños de archivos limitados que tal vez no quisiéramos cambiar) podemos usar directamente los archivos de la release de MySQL desde la consola de comandos (CMD) en lugar de usar entornos gráficos.

Tras localizar nuestra carpeta donde se encuentran los ejecutables de myslq (por ejemplo:

C:\Program Files\MySQL\MySQL Server X.Y\bin

ó

C:\xampp\mysql\bin

Procedemos a importar ficheros de diferentes tipos.

Importar SQL

Para importar tablas exportadas en formato SQL. Es un archivo de texto con sentencias SQL (preparadas para generar y poblar tablas y/o BD, según lo que se haya exportado en el archivo) que va a interpretar el ejecutable «mysql.exe«.

cd <PATH_AL_MYSQL.exe>
mysql -u root -p
[password] //Se pregunta al usuario por la contraseña
use <NOMBRE_BD>;
SET autocommit=0; 
source <PATH_ARCHIVO_SIN_COMILLAS.sql>; 
COMMIT;
Importar CSV

Los archivos CSV (Comma Separated Values) a veces no pueden ser importados directamente desde «mysql.exe» (algunas versiones de MySQL no implementan la sentencia SQL para importar archivos locales CSV), así que se tiene que usar el ejecutable «mysqlimport.exe«.

Como es evidente, este necesitará credenciales de acceso y el nombre de la BD. Hay que indicar qué valores se han usado para separar los campos y si los campos están encerrados entre algún tipo de caracter (por ejemplo las dobles comillas).

mysqlimport 
--fields-terminated-by=;
--fields-enclosed-by=" //Opcional
--verbose 
--local 
--user=<USUARIO_SIN_COMILLAS>
--password=<CONTRA_SIN_COMILLAS> 
<NOMBRE_BD>
<PATH_AL_ARCHIVO_SIN_COMILLAS>+<NOMBRE_TABLA>.csv

NOTA: Hay saltos de línea en los comandos para mejorar la lectura pero el comando no debe tener saltos de línea, sino espacios.

NOTA: el archivo CSV a importar debe tener el mismo nombre que la tabla a la que queremos insertarle los datos.

NULL y AUTO-INCREMENT

Si deseamos que un campo sea interpretado como NULL al importar nuestro archivo CSV podemos dejar dicho campo vacío o escribir NULL:

Ej: Campo1;NULL;Campo2;;

Tendríamos 2 campos vacíos (antes y después de «Campo2»). MySQL puede interpretar eso como que debe poner NULL o bien poner lo que el SGBD considera que es NULL (por ejemplo, pondría un 0 si es un integer y pondría ‘0000-00-00’ si es un date).

Si alguno de los valores del CSV debe seguir la secuencia de un campo AUTO-INCREMENT sencillamente debemos dejar dicho campo vacío (o escribir NULL).

Deja una respuesta