Cómo importar un archivo de Excel a una base de datos MySQL

88

¿Alguien puede explicar cómo importar un archivo de Microsoft Excel a una base de datos MySQL?

Por ejemplo, mi tabla de Excel se ve así:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80
Fero
fuente
[Puede echar un vistazo a este hilo] [1] en los foros de MySQL. Explica cómo hacer exactamente lo que quiere. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns
1
Esta utilidad gratuita hace que la importación de hojas de cálculo de Excel en tablas MySQL sea rápida y sencilla panofish.net/…
panofish
+1 para una idea nueva y diferente. El procesamiento es increíblemente lento, primero lee cada fila en el archivo y luego carga cualquier cosa. Se tardaron aproximadamente 15 minutos en importar 5.2K filas
Viernes
Para algunas hojas de cálculo, puede ser lento debido a la cantidad de columnas y filas. Pero, culpo a la biblioteca de objetos com microsofts, que es lo que se usa para leer la hoja de cálculo. Mi programa lee la hoja de cálculo tan rápido como lo permite la biblioteca. Las inserciones de mysql son muy rápidas. Si puede eliminar columnas innecesarias antes de importar ... eso puede ayudar.
Panofish
Tenía 14 columnas en 5173 filas. Ya había seleccionado todas las columnas / filas vacías y las eliminé para evitar un procesamiento innecesario. El sistema que estaba usando tenía 2.5G RAM y un procesador core2duo, no tenía muchos procesos en ejecución, la pestaña de rendimiento mostraba un uso del 65% en total y mucha RAM aún sin usar. Entonces, supongo que no culparía al hardware, pero como dijiste, los objetos de MS com apestan ... No sé cuándo MS dejará de construir basura que parecen salvavidas para los principiantes. Estoy harto de hacer más tonterías con los productos para la EM.
Viernes

Respuestas:

46
  1. Exportarlo a algún formato de texto. La más fácil probablemente sea una versión delimitada por tabulaciones, pero CSV también puede funcionar.

  2. Utilice la capacidad de carga de datos. Ver http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Mire hacia la mitad de la página, ya que le dará un buen ejemplo de datos separados por pestañas:

    CAMPOS TERMINADOS POR '\ t' ENCERRADOS POR '' ESCAPADOS POR '\'

  4. Verifique sus datos. A veces, citar o escapar tiene problemas, y necesita ajustar su fuente, comando de importación, o simplemente puede ser más fácil posprocesar a través de SQL.

ndp
fuente
2
Al exportar a CSV, [al menos] Excel 2013 intenta activamente envenenar los datos utilizando comillas dobles con escape de VBA, utilizando un separador decimal dependiente de la configuración regional (según la configuración regional del sistema operativo) para valores 0 (p. en el separador de propiedades de celda para todos los demás valores. Es mejor mantenerse alejado de CSV.
afk5min
1
Tenga en cuenta que este procedimiento requiere que primero cree la tabla, con los campos correspondientes.
LarsH
Ese no es el único problema. No estoy seguro de si este procedimiento trata correctamente con el retorno de carro dentro de una celda en Excel. Incluso las importaciones de csv a Excel fallan en eso
Raúl Luna
1
@ afk5min ¿¿¿¿¿¿¿¿¿¿¿¿¿¿Qué quiere decir con "datos de envenenamiento" ??? Todas esas etiquetas y marcas son muy útiles para los usuarios que obviamente lo van a importar a otro producto de MS ...
Mindwin
1
*
Quisiste
102

Existe una herramienta en línea simple que puede hacer esto llamada sqlizer.io .

Captura de pantalla de sqlizer.com

Carga un archivo XLSX en él, ingresa un nombre de hoja y un rango de celda, y generará una declaración CREATE TABLE y un montón de declaraciones INSERT para importar todos sus datos a una base de datos MySQL.

(Descargo de responsabilidad: ayudo a ejecutar SQLizer)

d4nt
fuente
22
Es bueno saber que esta herramienta existe, pero definitivamente piense si debe usarla o no. Si su hoja de cálculo contiene datos confidenciales (por ejemplo, correos electrónicos de usuarios, contraseñas, información de cc, información médica, etc.), puede que no sea una buena idea. Es posible que este sitio no almacene sus datos y que sea seguro, pero no hay forma de que lo sepa con certeza.
Chris Schmitz
1
@DivyeshJesadiya Es gratis para cualquier cosa hasta 5000 filas. Después de eso, debe pagar $ 10 por un mes de uso.
d4nt
@doxsi me parece bien, ¿qué tipo de problema tuviste con eso?
d4nt
@ChrisSchmitz somos muy cautelosos con la seguridad y escribimos una publicación de blog recientemente sobre cómo operamos SQLizer blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan
Funciona, preste atención al formato Excel, xlt no se acepta mientras que xls sí.
Emanuel Pirovano
40

A continuación se muestra otro método para importar datos de hojas de cálculo a una base de datos MySQL que no depende de ningún software adicional. Supongamos que desea importar su tabla de Excel a la salestabla de una base de datos MySQL llamada mydatabase.

  1. Seleccione las celdas relevantes:

    ingrese la descripción de la imagen aquí

  2. Pegue en Mr. Data Converter y seleccione la salida como MySQL:

    ingrese la descripción de la imagen aquí

  3. Cambie el nombre de la tabla y las definiciones de columna para que se ajusten a sus requisitos en el resultado generado:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. Si está utilizando MySQL Workbench o ya ha iniciado sesión mysqldesde la línea de comandos, puede ejecutar las declaraciones SQL generadas desde el paso 3 directamente. De lo contrario, pegue el código en un archivo de texto (por ejemplo, import.sql) y ejecute este comando desde un shell de Unix:

    mysql mydatabase < import.sql

    Se pueden encontrar otras formas de importar desde un archivo SQL en esta respuesta de Stack Overflow .

thdoan
fuente
1
Ésta era la forma más sencilla. ¡Gracias! Solo recuerde eliminar la 'ID' de la clave primaria adicional en el SQL y coloque un incremento AUTO de su elección.
Fandango68
29

En realidad, hay varias formas de importar un archivo de Excel a una base de datos MySQL con diversos grados de complejidad y éxito.

  1. Excel2MySQL . Sin duda, la forma más fácil y rápida de importar datos de Excel a MySQL. Es compatible con todas las versiones de Excel y no requiere la instalación de Office.

    captura de pantalla de Excel2MySQL

  2. LOAD DATA INFILE : esta opción popular es quizás la más técnica y requiere cierta comprensión de la ejecución de comandos MySQL. Debe crear manualmente su tabla antes de cargarla y usar tipos de campo VARCHAR de tamaño adecuado. Por lo tanto, sus tipos de datos de campo no están optimizados. LOAD DATA INFILE tiene problemas para importar archivos grandes que exceden el tamaño de 'max_allowed_packet'. Se requiere especial atención para evitar problemas al importar caracteres especiales y caracteres Unicode extranjeros. Aquí hay un ejemplo reciente que utilicé para importar un archivo csv llamado test.csv.

    ingrese la descripción de la imagen aquí

  3. phpMyAdmin : Primero seleccione su base de datos, luego seleccione la pestaña Importar. phpMyAdmin creará automáticamente su tabla y dimensionará sus campos VARCHAR, pero no optimizará los tipos de campo. phpMyAdmin tiene problemas para importar archivos grandes que exceden el tamaño de 'max_allowed_packet'.

    ingrese la descripción de la imagen aquí

  4. MySQL para Excel : este es un complemento de Excel gratuito de Oracle. Esta opción es un poco tediosa porque usa un asistente y la importación es lenta y con errores con archivos grandes, pero puede ser una buena opción para archivos pequeños con datos VARCHAR. Los campos no están optimizados.

    ingrese la descripción de la imagen aquí

panfish
fuente
Hola @panofish, tengo un Excel que se actualiza a diario. Me gustaría poner solo los datos actualizados para colocarlos en la tabla de la base de datos mysql en lugar de la tabla completa. (es decir) poner una fila en la tabla por día. ¿Cómo se puede hacer esto?
Arun Raja
Todas estas soluciones se enfocan en cargar una hoja de cálculo completa y reemplazar su tabla MySQL o agregarla a la tabla. ¿Los cambios están agregando nuevos registros o cambiando los registros existentes?
Panofish
Simplemente están sobrescribiendo los valores. Pero solo quiero que se agreguen los valores que aún no están presentes en la base de datos según la fecha. Esto puede aumentar el rendimiento simplemente agregando algunas filas en lugar de agregar muchas filas diariamente.
Arun Raja
2
La herramienta Excel2MySQL debería tener la posibilidad de crear solo el script de la base de datos :(
joseantgv
PHPMyAdmin fue el más fácil y rápido.
Amir Hajiha
2

No estoy seguro si tiene toda esta configuración, pero para mí estoy usando PHP y MYSQL. Entonces uso una clase PHP PHPExcel. Esto toma un archivo en casi cualquier formato, xls, xlsx, cvs, ... y luego le permite leer y / o insertar.

Entonces, lo que termino haciendo es cargar Excel en un objeto phpexcel y luego recorrer todas las filas. Según lo que quiero, escribo un comando de inserción SQL simple para insertar los datos en el archivo de Excel en mi tabla.

En la parte frontal es un poco de trabajo, pero es solo una cuestión de ajustar algunos de los ejemplos de código existentes. Pero cuando lo tiene marcado, realizar cambios en la importación es simple y rápido.

usuario1441213
fuente
1

la mejor y más sencilla forma es utilizar la aplicación "MySQL para Excel" que es una aplicación gratuita de Oracle. esta aplicación agregó un complemento para sobresalir para exportar e importar datos a mysql. puedes descargar eso desde aquí

Sadeq Shajary
fuente
1

Al usar archivos de texto para importar datos, tuve problemas con las comillas y con la forma en que Excel formateaba los números. Por ejemplo, mi configuración de Excel usó la coma como separador decimal en lugar del punto.

Ahora uso Microsoft Access 2010 para abrir mi tabla MySql como tabla vinculada. Allí puedo simplemente copiar y pegar celdas de Excel a Access.

Para hacer esto, primero instale el controlador ODBC de MySql y cree una conexión ODBC . Luego, en el acceso, en la pestaña "Datos externos", abra el cuadro de diálogo "Base de datos ODBC" y enlace a cualquier tabla usando la conexión ODBC.

Con MySql Workbench , también puede copiar y pegar sus datos de Excel en la cuadrícula de resultados de MySql Workbench. Di instrucciones detalladas en esta respuesta .

Christophe Weis
fuente
0

Puede usar DocChow , una GIU muy intuitiva para importar Excel a MySQL, y es gratis en la mayoría de las plataformas comunes (incluido Linux).

Más especialmente si le preocupa la fecha, los tipos de datos de fecha y hora, DocChow maneja fácilmente los tipos de datos. Si está trabajando con varias hojas de cálculo de Excel que desea importar a una tabla MySQL, DocChow hace el trabajo sucio.

Seanj1000
fuente
0

Paso 1 Crea tu archivo CSV

Paso 2 inicie sesión en su servidor mysql

     mysql -uroot -pyourpassword 

Paso 3 cargue su archivo csv

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);
Syed Shibli
fuente
0

Otra herramienta útil, y como reemplazo del front-end de MySQL, es Toad para MySQL . Lamentablemente, ya no es compatible con Quest , pero es un IDE brillante para MySQL, con asistentes de IMPORT y EXPORT, que se adaptan a la mayoría de los tipos de archivos.

Fandango68
fuente