Estoy importando algunos datos de 20000 filas de un archivo CSV a Mysql.
Las columnas del CSV están en un orden diferente al de las columnas de la tabla MySQL. ¿Cómo asignar automáticamente las 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 una sintaxis automática para importar datos a Mysql.
mysql
csv
import
load-data-infile
MANJEET
fuente
fuente
Respuestas:
Puede utilizar el comando LOAD DATA INFILE para importar un archivo csv a la tabla.
Consulte este enlace MySQL - LOAD DATA INFILE .
Para usuarios de MySQL 8.0:
El uso de la
LOCAL
palabra clave contiene riesgos de seguridad y, a partir de MySQL 8.0, laLOCAL
capacidad está configuradaFalse
de forma predeterminada. Es posible que vea el error:Puede sobrescribirlo siguiendo las instrucciones de los documentos . Tenga en cuenta que dicha sobrescritura no resuelve el problema de seguridad, sino más bien un reconocimiento de que está consciente y dispuesto a correr el riesgo.
fuente
IGNORE 1 LINES
hace exactamente aquí? Gracias por adelantado.Probablemente necesite establecer
FIELDS TERMINATED BY ','
el delimitador o el que sea.Para un archivo CSV, su declaración debería tener este aspecto:
fuente
Antes de importar el archivo, debe preparar lo siguiente:
Supongamos que tenemos la siguiente tabla:
CREAR TABLA UTILIZANDO LA SIGUIENTE CONSULTA:
Si todo está bien ... Ejecute la siguiente consulta para CARGAR DATOS DEL ARCHIVO CSV:
Si todo ha hecho. ha exportado datos de CSV a la tabla con éxito
fuente
Sintaxis:
Vea este ejemplo:
fuente
Inserte a granel más de 7000000 registros en 1 minuto en la base de datos (consulta superrápida con cálculo)
RRP y RRP_nl y RRP_bl no están en csv pero se calcula eso y luego insertar eso.
fuente
Si está ejecutando
LOAD DATA LOCAL INFILE
desde el shell de Windows y necesita usarloOPTIONALLY ENCLOSED BY '"'
, tendrá que hacer algo como esto para escapar de los caracteres correctamente:fuente
supongamos que está utilizando xampp y phpmyadmin
tiene el nombre de archivo 'ratings.txt' el nombre de la tabla 'ratings' y el 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"
Espero que esto pueda ayudarlo a omitir su error si está haciendo esto en localhost
fuente
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
table.txt
--ejemplo en windows
fuente
Recibí 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 con wampserver 3.0.6 de 64 bits.
Edité el archivo my.ini de C: \ wamp64 \ bin \ mysql \ mysql5.7.14
Elimine la entrada secure_file_priv c: \ wamp64 \ tmp \ (o cualquier directorio que tenga aquí)
Detuvo todo -salir wamp, etc.- y reinició todo; luego batea mi archivo cvs en C: \ wamp64 \ bin \ mysql \ mysql5.7.14 \ data \ u242349266_recur (el último directorio es el nombre de mi base de datos)
ejecutado LOAD DATA INFILE 'myfile.csv'
EN LA MESA alumnos
CAMPOS TERMINADOS POR ','
ENCERRADA POR '"'
LÍNEAS TERMINADAS POR '\ r \ n'
IGNORAR 1 LÍNEAS
... ¡¡¡y voilá!!!
fuente
Puedes intentar insertarlo así:
fuente
En estos días (que finalizan en 2019) prefiero usar una herramienta como http://www.convertcsv.com/csv-to-sql.htm . Tienes muchas filas en las que puedes ejecutar bloques particionados y evitar errores de usuario cuando el csv proviene una hoja de cálculo del usuario final.
fuente