¿Cuál es la forma mejor / más rápida de cargar un archivo csv en una tabla mysql? Me gustaría que la primera fila de datos se usara como nombres de columna.
Encontró esto:
Cómo importar un archivo CSV a una tabla MySQL
¿Pero la única respuesta fue usar una GUI y no un shell?
Respuestas:
En lugar de escribir un script para extraer información de un archivo CSV, puede vincular MYSQL directamente a él y cargar la información utilizando la siguiente sintaxis SQL.
Para importar un archivo de Excel a MySQL, primero expórtelo como archivo CSV. Elimine los encabezados CSV del archivo CSV generado junto con los datos vacíos que Excel puede haber puesto al final del archivo CSV.
Luego puede importarlo a una tabla MySQL ejecutando:
como sigue leyendo: Importar archivo CSV directamente en MySQL
EDITAR
Para su caso, primero deberá escribir un intérprete, para encontrar la primera fila y asignarlos como nombres de columna.
EDITAR-2
De los documentos de MySQL sobre
LOAD DATA
sintaxis :Por lo tanto, puede utilizar la siguiente declaración:
fuente
IGNORE 1 LINES
a la consultaAquí hay un script de línea de comando PHP simple que hará lo que necesita:
Creará una tabla basada en la primera fila e importará las filas restantes en ella. Aquí está la sintaxis de la línea de comandos:
fuente
fields terminated by ','
... incluso funciona con CSV parcialmente entrecomillados.ENCLOSED BY '\"'
... también, mucha gente necesitaráLINES TERMINATED BY '\r\n'
si usa un CSV de Windows. Y finalmente, es prudente escapar de los nombres de campo con$columns .= "`$column` varchar(250)";
Si tiene la capacidad de instalar phpadmin, hay una sección de importación donde puede importar archivos csv a su base de datos, incluso hay una casilla de verificación para establecer el encabezado en la primera línea del archivo que contiene los nombres de las columnas de la tabla (si está desmarcado, el la primera línea pasará a formar parte de los datos
fuente
Primero cree una tabla en la base de datos con el mismo número de columnas que el archivo csv.
Luego usa la siguiente consulta
fuente
Para cargar datos desde un archivo de texto o un archivo csv, el comando es
En el comando anterior, en mi caso, solo hay una columna para cargar, por lo que no hay "terminado por" ni "encerrado por", así que lo mantuve vacío; de lo contrario, el programador puede ingresar el carácter de separación. por ej. , (coma) o "o; o cualquier cosa.
** para personas que usan mysql versión 5 y superior **
Antes de cargar el archivo en mysql debe asegurarse de que la línea de remolque debajo se agregue en el costado
etc/mysql/my.cnf
para editar el comando my.cnf es
sudo vi /etc/mysql/my.cnf
fuente
Si inicia mysql como "mysql -u -p --local-infile", funcionará bien
fuente
Escribí un código para hacer esto, pondré algunos fragmentos:
Luego, obtenga los encabezados CSV para que pueda decirle a mysql cómo importar (nota: asegúrese de que sus columnas de mysql coincidan exactamente con las columnas de csv):
Luego envíe su consulta al servidor mysql:
fuente
Luché con esto durante algún tiempo. El problema no radica en cómo cargar los datos, sino en cómo construir la tabla para contenerlos. Debe generar una declaración DDL para crear la tabla antes de importar los datos.
Particularmente difícil si la tabla tiene una gran cantidad de columnas.
Aquí hay un script de Python que (casi) hace el trabajo:
El problema que queda por resolver es que el nombre del campo final y la declaración del tipo de datos terminan con una coma, y el analizador mySQL no lo tolerará.
Por supuesto, también tiene el problema de que utiliza el tipo de datos TEXT para cada campo. Si la tabla tiene varios cientos de columnas, VARCHAR (64) hará que la tabla sea demasiado grande.
Esto también parece romperse en el recuento máximo de columnas para mySQL. Ahí es cuando es el momento de pasar a Hive o HBase si puede.
fuente
Así es como lo hice en Python usando csv y MySQL Connector :
Puntos clave
'rb'
binarioskipinitialspace
opción.255
no es lo suficientemente ancho, obtendrá errores en INSERT y tendrá que empezar de nuevo.ALTER TABLE t MODIFY `Amount` DECIMAL(11,2);
ALTER TABLE t ADD `id` INT PRIMARY KEY AUTO_INCREMENT;
fuente
Importar archivos CSV a la tabla mysql
visitas: http://www.webslessons.com/2014/02/import-csv-files-using-php-and-mysql.html
fuente
Como han mencionado otros, el archivo local de datos de carga funciona bien. Probé el script php que publicó Hawkee, pero no funcionó para mí. En lugar de depurarlo, esto es lo que hice:
1) copie / pegue la fila del encabezado del archivo CSV en un archivo txt y edítelo con emacs. agregue una coma y CR entre cada campo para colocar cada uno en su propia línea.
2) Guarde ese archivo como FieldList.txt
3) edite el archivo para incluir defns para cada campo (la mayoría eran varchar, pero bastantes eran int (x). Agregue crear tabla nombre de tabla (al principio del archivo y) al final del archivo. Guárdelo como CreateTable.sql
4) inicie el cliente mysql con la entrada del archivo Createtable.sql para crear la tabla
5) inicie el cliente mysql, copie / pegue en la mayor parte del comando 'LOAD DATA INFILE' sustituyendo mi tabla nombre y nombre del archivo csv. Pegue en el archivo FieldList.txt. Asegúrese de incluir 'IGNORAR 1 LÍNEAS' antes de pegar en la lista de campos
Parece mucho trabajo, pero fácil con emacs .....
fuente
Use la aplicación TablePlus: haga clic con el botón derecho en el nombre de la tabla en el panel derecho. Elija Importar ...> Desde CSV. Elija el archivo CSV. Revise la columna correspondiente y presione Importar. Todo listo.
fuente
Tengo una búsqueda en Google de muchas formas de importar csv a mysql, incluir "cargar datos de archivo", usar mysql workbench, etc.
cuando uso el botón de importación de mysql workbench, primero debe crear la tabla vacía por su cuenta, configurar cada tipo de columna por su cuenta. Nota: debe agregar la columna de ID al final como clave principal y no nula y auto_increment, de lo contrario, el botón de importación no estará visible más adelante. Sin embargo, cuando comienzo a cargar el archivo CSV, no se carga nada, parece un error. Me rindo.
Por suerte, la mejor manera fácil que encontré hasta ahora es usar mysql de Oracle para Excel. puedes descargarlo desde aquí mysql para excel
Esto es lo que va a hacer: abra el archivo csv en excel, en la pestaña Datos, busque el botón mysql para excel
seleccione todos los datos, haga clic en exportar a mysql. Nota para establecer una columna de ID como clave principal.
cuando termine, vaya a mysql workbench para modificar la tabla, por ejemplo, el tipo de moneda debe ser decimal (19,4) para una gran cantidad decimal (10,2) para uso regular. otro tipo de campo se puede establecer en varchar (255).
fuente