2009-10-26 75 views
7

¿MySql tiene una herramienta de línea de comandos de carga masiva como bcp para SQLServer y sqlldr para Oracle? Sé que hay un comando SQL LOAD INFILE o similar, pero a veces necesito cargar de forma masiva un archivo que está en un cuadro diferente a la base de datos MySQL.Herramienta de línea de comandos de carga masiva MySql

Respuesta

7

mysqlimport.

toma los mismos parámetros de conexión que el shell de línea de comandos mysql. Asegúrese de utilizar el indicador -L para usar un archivo en el sistema de archivos local, de lo contrario, (extrañamente) supondrá que el archivo está en el servidor.

También existe una variante análoga al comando load data infile, es decir, load data local infile, según el cual el archivo se cargará desde el cliente en lugar del servidor, lo que puede lograr lo que desea hacer.

+0

mysqlimport se parece a lo que estoy buscando, gracias. La única peculiaridad que noté es que parece que el nombre del archivo debe coincidir con el nombre de la tabla, por lo que tal vez 'load data local infile' sea más flexible. –

+1

, sí, entonces puede agregar un enlace simbólico al archivo antes de importarlo. – Don

2

Creo que mysqlimport puede ayudar?

Carga tablas de archivos de texto en varios formatos. El nombre base del archivo de texto debe ser el nombre de la tabla que se debe usar. Si se usan sockets para conectarse al servidor MySQL, el servidor se abrirá y leerá el archivo de texto directamente. En otros casos, el cliente abrirá el archivo de texto . El comando SQL 'LOAD DATA INFILE' se usa para importar las filas.

2
mysql -u root -p 
use database; 
source /path/yourfile.sql 

podría ser lo que está buscando, puede utilizar rsync mediante ssh a la transferT 'de archivos de grueso' de una máquina a otra.

5
LOAD DATA LOCAL INFILE 'C:\\path\\to\\windows\\file.CSV' 
INTO TABLE table_name 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(field1, field2, field3, fieldx); 
+0

¡increíblemente rápido! –

Cuestiones relacionadas