MySQL
Datos de carga infile
Buscar..
Sintaxis
- DATOS DE CARGA [LOW_PRIORITY | CONCURRENTE] [LOCAL] INFILE 'nombre_archivo'
- EN LA TABLA tbl_name
- [CARACTER SET charset]
- [{CAMPOS | COLUMNAS} [TERMINADO POR 'cadena'] [[OPCIONALMENTE] CERRADO POR 'char']]
- [LÍNEAS [COMIENZO POR 'cadena'] [TERMINADO POR 'cadena']]
- [IGNORAR número {LINEAS | FILAS}]
- [(col_name_or_user_var, ...)]
- [SET col_name = expr, ...]
usando LOAD DATA INFILE para cargar una gran cantidad de datos a la base de datos
Considere el siguiente ejemplo, suponiendo que tiene un CSV delimitado por ';' para cargar en su base de datos.
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992
Crear la tabla para la inserción.
CREATE TABLE `employee` ( `id` INT NOT NULL ,
`name` VARCHAR NOT NULL,
`sex` VARCHAR NOT NULL ,
`designation` VARCHAR NOT NULL ,
`dob` VARCHAR NOT NULL );
Use la siguiente consulta para insertar los valores en esa tabla.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,dob)
Considere el caso donde el formato de fecha no es estándar.
1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993
En este caso, puede cambiar el formato de la columna dob
antes de insertar así.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,@dob)
SET date = STR_TO_DATE(@date, '%d-%b-%Y');
Este ejemplo de LOAD DATA INFILE no especifica todas las funciones disponibles.
Puedes ver más referencias en LOAD DATA INFILE aquí .
Importar un archivo CSV en una tabla de MySQL
El siguiente comando importa archivos CSV a una tabla de MySQL con las mismas columnas, respetando las reglas de cotización y escape de CSV.
load data infile '/tmp/file.csv'
into table my_table
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
ignore 1 lines; -- skip the header row
Cargar datos con duplicados.
Si usa el comando LOAD DATA INFILE
para llenar una tabla con datos existentes, a menudo encontrará que la importación falla debido a duplicados. Hay varias formas posibles de superar este problema.
Datos de carga local
Si esta opción se ha habilitado en su servidor, puede usarse para cargar un archivo que existe en la computadora cliente en lugar del servidor. Un efecto secundario es que las filas duplicadas para valores únicos se ignoran.
LOAD DATA LOCAL INFILE 'path of the file/file_name.txt'
INTO TABLE employee
CARGAR DATOS INFILE 'fname' REEMPLAZAR
Cuando se usa la palabra clave de reemplazo, duplicar claves únicas o primarias resultará en que la fila existente se reemplace con otras nuevas
LOAD DATA INFILE 'path of the file/file_name.txt'
REPLACE INTO TABLE employee
DATOS DE LA CARGA INFILE 'fname' IGNORE
Lo contrario de REPLACE
, las filas existentes se conservarán y las nuevas se ignorarán. Este comportamiento es similar al LOCAL
descrito anteriormente. Sin embargo, el archivo no necesita existir en la computadora cliente.
LOAD DATA INFILE 'path of the file/file_name.txt'
IGNORE INTO TABLE employee
Carga vía tabla intermedia
A veces, ignorar o reemplazar todos los duplicados puede no ser la opción ideal. Es posible que deba tomar decisiones basadas en el contenido de otras columnas. En ese caso, la mejor opción es cargar en una tabla intermedia y transferir desde allí.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
importación y exportación
importar
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
Exportar
LOAD DATA INFILE 'result.txt' INTO TABLE table;