web-dev-qa-db-fra.com

Comment importer un fichier Excel dans une base de données MySQL

Quelqu'un peut-il expliquer comment importer un fichier Microsoft Excel dans une base de données MySQL?

Par exemple, mon tableau Excel ressemble à ceci:

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

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

Merci d'avance.

Fero

63
Fero
  1. Exportez-le dans un format de texte. Le plus simple sera probablement une version délimitée par des tabulations, mais le format CSV peut également fonctionner.

  2. Utilisez la capacité de chargement de données. Voir http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Regardez au milieu de la page, cela donnera un bon exemple pour les données séparées par des tabulations:

    ZONES TERMINEES PAR '\ t' CLÔTURÉS PAR '' ESCAPED BY ''

  4. Vérifiez vos données. Parfois, citer ou échapper a des problèmes et vous devez ajuster votre commande source, importation - ou il peut simplement être plus facile de post-traiter via SQL.

44
ndp

Il existe un outil en ligne simple appelé sqlizer.io , capable de le faire. 

 Screenshot from sqlizer.com

Vous téléchargez un fichier XLSX dessus, entrez un nom de feuille et une plage de cellules. Une instruction CREATE TABLE et un ensemble d'instructions INSERT seront alors générés pour importer toutes vos données dans une base de données MySQL.

88
d4nt

Il existe en réalité plusieurs manières d'importer un fichier Excel dans une base de données MySQL avec plus ou moins de complexité et de succès.

  1. Excel2MySQL ou Navicat utilitaires. Divulgation complète, je suis l'auteur de Excel2MySQL. Ces 2 utilitaires ne sont pas gratuits, mais ils représentent l'option la plus simple et le moins restrictif. Ils incluent également des fonctionnalités supplémentaires facilitant l’importation de données Excel dans MySQL. Par exemple, Excel2MySQL crée automatiquement votre table et optimise automatiquement les types de données de champ tels que les dates, les heures, les flottants, etc. Si vous êtes pressé ou ne pouvez pas utiliser les autres options pour utiliser vos données, ces utilitaires peuvent répondre à vos besoins. 

    screenshot of Excel2MySQL

  2. LOAD DATA INFILE: Cette option populaire est peut-être la plus technique et nécessite une certaine compréhension de l'exécution des commandes MySQL. Vous devez créer manuellement votre table avant de charger et utiliser des types de champ VARCHAR de taille appropriée. Par conséquent, vos types de données de champ ne sont pas optimisés. LOAD DATA INFILE rencontre des difficultés pour importer des fichiers volumineux dont la taille dépasse «max_allowed_packet». Une attention particulière est nécessaire pour éviter les problèmes d'importation de caractères spéciaux et de caractères Unicode étrangers. Voici un exemple récent que j'ai utilisé pour importer un fichier csv nommé test.csv.

    enter image description here

  3. phpMyAdmin: sélectionnez d'abord votre base de données, puis sélectionnez l'onglet Importer. phpMyAdmin créera automatiquement votre table et dimensionnera vos champs VARCHAR, mais il n'optimisera pas les types de champs. phpMyAdmin a du mal à importer des fichiers volumineux qui dépassent la taille de "max_allowed_packet".

    enter image description here

  4. MySQL pour Excel: Ceci est un complément Excel gratuit d'Oracle. Cette option est un peu fastidieuse car elle utilise un assistant et l'importation est lente et problématique avec les gros fichiers, mais cela peut être une bonne option pour les petits fichiers avec des données VARCHAR. Les champs ne sont pas optimisés.

    enter image description here

27
panofish

Vous trouverez ci-dessous une autre méthode pour importer des données de feuille de calcul dans une base de données MySQL qui ne repose sur aucun logiciel supplémentaire. Supposons que vous souhaitiez importer votre table Excel dans la table sales d'une base de données MySQL nommée mydatabase.

  1. Sélectionnez les cellules appropriées:

     enter image description here

  2. Collez dans Mr. Data Converter et sélectionnez la sortie en tant que MySQL:

     enter image description here

  3. Modifiez le nom de la table et les définitions de colonne pour répondre à vos exigences dans la sortie générée:

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 vous utilisez MySQL Workbench ou que vous êtes déjà connecté à mysql à partir de la ligne de commande, vous pouvez exécuter directement les instructions SQL générées à l'étape 3. Sinon, collez le code dans un fichier texte (par exemple, import.sql) et exécutez cette commande à partir d'un shell Unix:

    mysql mydatabase < import.sql

    Vous pouvez trouver d'autres moyens d'importer à partir d'un fichier SQL dans cette réponse de débordement de pile .

25
thdoan

Je ne sais pas si vous avez toute cette configuration, mais pour moi, j'utilise PHP et MYSQL. J'utilise donc une classe PHP PHPExcel. Cela prend un fichier dans presque tous les formats, xls, xlsx, cvs, ... et vous permet ensuite de lire et/ou d’insérer.

Donc, ce que je termine est de charger Excel dans un objet phpexcel, puis de parcourir toutes les lignes. Sur la base de ce que je veux, j'écris une simple commande d'insertion SQL pour insérer les données du fichier Excel dans ma table.

Au début, c’est un peu de travail, mais c’est juste une question de peaufiner certains exemples de code existants. Mais lorsque vous le composez, il est simple et rapide de modifier l’importation.

2
user1441213

la meilleure et la plus simple consiste à utiliser l'application "MySQL for Excel", une application gratuite d'Oracle. cette application a ajouté un plugin à Excel pour exporter et importer des données vers mysql. vous pouvez le télécharger depuis ici

1
Sadeq Shajary

Un autre outil utile, et en tant que remplacement frontal de MySQL, est Toad for MySQL . Malheureusement, ce n'est plus supporté par Quest , mais un brillant IDE pour MySQL, avec des assistants IMPORT et EXPORT, prenant en charge la plupart des types de fichiers.

0
Fandango68

Lorsque j'utilisais des fichiers texte pour importer des données, j'avais des problèmes avec les citations et le formatage des nombres par Excel. Par exemple, ma configuration Excel utilisait la virgule comme séparateur décimal au lieu du point.

J'utilise maintenant Microsoft Access 2010 pour ouvrir ma table MySql en tant que table liée. Là, je peux simplement copier et coller des cellules d'Excel vers Access.

Pour ce faire, installez d’abord le pilote MySql ODBC et créez une connexion ODBC . Ensuite, dans l’accès, dans l’onglet "Données externes", ouvrez le fichier "Base de données" et un lien vers n’importe quelle table utilisant la connexion ODBC.

0
Christophe Weis

Pour un exemple pas à pas pour importer Excel 2007 dans MySQL avec le codage correct (UTF-8), recherchez ce commentaire:

"Publié par Mike Laird le 13 Octobre 2010 à 12h50"

dans l'URL suivante:

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

0
Raúl Moreno

Vous pouvez utiliser DocChow , un GIU très intuitif pour importer Excel dans MySQL, qui est gratuit sur la plupart des plateformes (y compris Linux). 

Plus particulièrement si vous êtes préoccupé par la date, les types de données datetime, DocChow gère facilement les types de données. Si vous utilisez plusieurs feuilles de calcul Excel que vous souhaitez importer dans un seul tableau MySQL, DocChow effectue le travail incorrect.

0
Seanj1000

Étape 1 Créez votre fichier CSV

Étape 2 connectez-vous à votre serveur mysql

     mysql -uroot -pyourpassword 

Étape 3 Chargez votre fichier csv

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