Buscar..


Sintaxis

  1. DATOS DE CARGA [LOW_PRIORITY | CONCURRENTE] [LOCAL] INFILE 'nombre_archivo'
  2. EN LA TABLA tbl_name
  3. [CARACTER SET charset]
  4. [{CAMPOS | COLUMNAS} [TERMINADO POR 'cadena'] [[OPCIONALMENTE] CERRADO POR 'char']]
  5. [LÍNEAS [COMIENZO POR 'cadena'] [TERMINADO POR 'cadena']]
  6. [IGNORAR número {LINEAS | FILAS}]
  7. [(col_name_or_user_var, ...)]
  8. [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;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow