into - MYSQL importa datos desde csv utilizando LOAD DATA INFILE
mysql get data from table (9)
Antes de importar el archivo, debe preparar lo siguiente:
- Una tabla de base de datos a la cual se importarán los datos del archivo.
- Un archivo CSV con datos que coinciden con el número de columnas de la tabla y el tipo de datos en cada columna.
- La cuenta, que se conecta al servidor de base de datos MySQL, tiene privilegios FILE e INSERT.
Supongamos que tenemos la siguiente tabla:
CREAR TABLA CON LA SIGUIENTE CONSULTA:
CREATE TABLE IF NOT EXISTS `survey` (
`projectId` bigint(20) NOT NULL,
`surveyId` bigint(20) NOT NULL,
`views` bigint(20) NOT NULL,
`dateTime` datetime NOT NULL
);
SU ARCHIVO CSV DEBE ESTAR FORMATO CORRECTO PARA EL EJEMPLO VEA LA SIGUIENTE IMAGEN ADJUNTA:
Si todo está bien ... Ejecute la siguiente consulta para CARGAR DATOS DEL ARCHIVO CSV:
NOTA: agregue la ruta absoluta de su archivo CSV
LOAD DATA INFILE ''/var/www/csv/data.csv''
INTO TABLE survey
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/r/n''
IGNORE 1 LINES;
Si todo ha hecho. ha exportado datos de CSV a la tabla con éxito
Estoy importando algunos datos de 20000 filas desde un archivo CSV a Mysql.
Las columnas en el archivo CSV están en un orden diferente al de las columnas de la tabla MySQL. ¿Cómo asignar automáticamente columnas correspondientes a las columnas de la tabla Mysql?
Cuando ejecuto
LOAD DATA INFILE''abc.csv'' INTO TABLE abc
esta consulta agrega todos los datos a la primera columna.
Sugiera la sintaxis automática para importar datos a Mysql.
Estaba obteniendo el código de error: 1290. El servidor MySQL se está ejecutando con la opción --secure-file-priv por lo que no puede ejecutar esta declaración
Esto funcionó para mí en Windows 8.1 de 64 bits usando wampserver 3.0.6 64bit.
Archivo editado my.ini de C: / wamp64 / bin / mysql / mysql5.7.14
Borre la entrada secure_file_priv c: / wamp64 / tmp / (o el directorio que tenga aquí)
Dejó todo -exit wamp, etc.- y reinició todo; luego punt my cvs file en C: / wamp64 / bin / mysql / mysql5.7.14 / data / u242349266_recur (el último dir es el nombre de mi base de datos)
ejecutado LOAD DATA INFILE ''myfile.csv''
EN LA TABLA de los alumnos
CAMPOS TERMINADOS POR '',''
ENCERRADA POR ''"''
LÍNEAS TERMINADAS POR ''/ r / n''
IGNORAR 1 LÍNEAS
... ¡¡¡y voilá!!!
Insertar más de 7000000 registros en 1 minuto en la base de datos (consulta superrápida con cálculo)
mysqli_query($cons, ''
LOAD DATA LOCAL INFILE "''.$file.''"
INTO TABLE tablename
FIELDS TERMINATED by /',/'
LINES TERMINATED BY /'/n/'
IGNORE 1 LINES
(isbn10,isbn13,price,discount,free_stock,report,report_date)
SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))),
RRP_nl = RRP * 1.44 + 8,
RRP_bl = RRP * 1.44 + 8,
ID = NULL
'')or die(mysqli_error());
$affected = (int) (mysqli_affected_rows($cons))-1;
$log->lwrite(''Inventory.CSV to database:''. $affected.'' record inserted successfully.'');
RRP y RRP_nl y RRP_bl no están en csv, pero estamos calculados y luego de insertar eso.
Probablemente necesites configurar los FIELDS TERMINATED BY '',''
o lo que sea que sea el delimitador.
Para un archivo CSV, su declaración debe verse así:
LOAD DATA INFILE ''data.csv'' INTO TABLE tbl_name
FIELDS TERMINATED BY '','' ENCLOSED BY ''"''
LINES TERMINATED BY ''/r/n''
IGNORE 1 LINES;
Puede cargar datos desde un archivo csv o de texto. Si tiene un archivo de texto con registros de una tabla, puede cargar esos registros dentro de la tabla. Por ejemplo, si tiene un archivo de texto, donde cada fila es un registro con los valores de cada columna, puede cargar los registros de esta manera.
table.sql
id //field 1
name //field2
table.txt
1,peter
2,daniel
...
- ejemplo en windows
LOAD DATA LOCAL INFILE ''C://directory_example//table.txt''
INTO TABLE Table
CHARACTER SET UTF8
FIELDS TERMINATED BY '',''
LINES TERMINATED BY ''/r/n'';
Puede usar el comando LOAD DATA INFILE para importar archivos csv a la tabla.
Verifique este enlace MySQL - LOAD DATA INFILE .
LOAD DATA LOCAL INFILE ''abc.csv'' INTO TABLE abc
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/r/n''
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
Si está ejecutando LOAD DATA LOCAL INFILE
desde el shell de Windows, y necesita usar OPTIONALLY ENCLOSED BY ''"''
, tendrá que hacer algo como esto para escapar de los caracteres correctamente:
"C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE ''!file!'' INTO TABLE !table! FIELDS TERMINATED BY '','' OPTIONALLY ENCLOSED BY ''"^""'' LINES TERMINATED BY ''/n'' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out
Sintaxis:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE ''file_name'' INTO TABLE `tbl_name`
CHARACTER SET [CHARACTER SET charset_name]
FIELDS [{FIELDS | COLUMNS}[TERMINATED BY ''string'']]
[LINES[TERMINATED BY ''string'']]
[IGNORE number {LINES | ROWS}]
Ver este ejemplo:
LOAD DATA LOCAL INFILE
''E://wamp//tmp//customer.csv'' INTO TABLE `customer`
CHARACTER SET ''utf8''
FIELDS TERMINATED BY '','' ENCLOSED BY ''"''
LINES TERMINATED BY ''/r/n''
IGNORE 1 LINES;
supongamos que está utilizando xampp y phpmyadmin
tiene nombre de archivo ''ratings.txt'' nombre de tabla ''ratings'' y nombre de la base de datos ''movies''
si su xampp está instalado en "C: / xampp /"
Copie su archivo "ratings.txt" en la carpeta "C: / xampp / mysql / data / movies"
LOAD DATA INFILE ''ratings.txt'' INTO TABLE ratings FIELDS TERMINATED BY '','' ENCLOSED BY ''"'' LINES TERMINATED BY ''/r/n'' IGNORE 1 LINES;
Espero que esto pueda ayudarte a omitir tu error si estás haciendo esto en localhost