So importieren Sie eine Excel-Datei in eine MySQL-Datenbank

86

Kann jemand erklären, wie man eine Microsoft Excel-Datei in eine MySQL-Datenbank importiert?

Zum Beispiel sieht meine Excel-Tabelle folgendermaßen aus:

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

Greece    |   9377     |   0.80

Australia |   9375     |   0.80
Fero
quelle
[Sie können sich diesen Thread ansehen] [1] in den MySQL-Foren. Es wird erklärt, wie Sie genau das tun, was Sie wollen. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns
1
Dieses kostenlose Dienstprogramm macht das Importieren von Excel-Tabellen in MySQL-Tabellen schnell und einfach panofish.net/…
panofish
+1 für eine neue und andere Idee. Die Verarbeitung ist wahnsinnig langsam, sie liest zuerst jede Zeile in der Datei und lädt dann alles hoch. Es dauerte ungefähr 15 Minuten, um 5.2K Zeilen zu importieren
Fr0zenFyr
Bei einigen Tabellenkalkulationen kann es aufgrund der Anzahl der Spalten und Zeilen langsam sein. Aber ich beschuldige Microsoft Com-Object Library, die zum Lesen der Tabelle verwendet wird. Mein Programm liest die Tabelle so schnell, wie es die Bibliothek zulässt. Die MySQL-Inserts sind sehr schnell. Wenn Sie vor dem Import unnötige Spalten entfernen können, kann dies hilfreich sein.
Panofish
Ich hatte 14 Spalten in 5173 Zeilen. Ich hatte bereits alle leeren Spalten / Zeilen ausgewählt und gelöscht, um unnötige Verarbeitung zu vermeiden. Das von mir verwendete System hatte 2,5 GB RAM und einen core2duo-Prozessor, es wurden nicht viele Prozesse ausgeführt, auf der Registerkarte Leistung wurde eine Auslastung von 65% angezeigt, und viel RAM wurde noch nicht verwendet. Also, ich denke, ich würde die Hardware nicht beschuldigen, aber wie Sie sagten, saugen MS-Com-Objekte. Ich weiß nicht, wann MS aufhören wird, Mist zu bauen, der für Anfänger wie Lebensretter aussieht. Ich habe es satt, extra Mist für MS-Produkte zu machen.
Fr0zenFyr

Antworten:

46
  1. Exportieren Sie es in ein Textformat. Am einfachsten wird wahrscheinlich eine durch Tabulatoren getrennte Version sein, aber CSV kann auch funktionieren.

  2. Verwenden Sie die Funktion zum Laden von Daten. Siehe http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Schauen Sie sich die Hälfte der Seite an, da dies ein gutes Beispiel für tabulatorgetrennte Daten darstellt:

    FELDER BEENDET DURCH '\ t' EINGESCHLOSSEN DURCH '' ESCAPED BY '\'

  4. Überprüfen Sie Ihre Daten. Manchmal hat das Zitieren oder Escape-Problem Probleme, und Sie müssen Ihre Quelle und Ihren Importbefehl anpassen - oder es ist möglicherweise einfacher, die Nachbearbeitung über SQL durchzuführen.

ndp
quelle
2
Beim Export in CSV versucht [mindestens] excel 2013 aktiv, Daten mithilfe von VBA-Escape-Doppelzitaten zu vergiften, wobei das länderabhängige (basierend auf den regionalen Einstellungen des Betriebssystems) Dezimaltrennzeichen für 0-Werte verwendet wird (z. B. ',', während 'wie definiert' verwendet wird im Trennzeichen der Zelleigenschaften für alle anderen Werte. Am besten von CSV
fernhalten
1
Beachten Sie, dass für dieses Verfahren zuerst die Tabelle mit den entsprechenden Feldern erstellt werden muss.
LarsH
Das ist nicht das einzige Problem. Ich bin nicht sicher, ob dieses Verfahren den Wagenrücklauf in einer Excel-Zelle korrekt behandelt. Sogar die Importe von CSV nach Excel scheitern daran
Raul Luna
1
@ afk5min was meinst du mit "Giftdaten" ??? Alle diese Tags und Markups sind sehr nützlich für die Benutzer, die das offensichtlich in ein anderes MS-Produkt importieren werden ...
Mindwin
1
* Sie meinten "Der schwierigste Weg" nicht der einfachste
Revious
100

Es gibt ein einfaches Online-Tool namens sqlizer.io , das dies kann .

Screenshot von sqlizer.com

Sie laden eine XLSX-Datei hoch, geben einen Blattnamen und einen Zellbereich ein und es werden eine CREATE TABLE-Anweisung und eine Reihe von INSERT-Anweisungen generiert, um alle Ihre Daten in eine MySQL-Datenbank zu importieren.

(Haftungsausschluss: Ich helfe beim Ausführen von SQLizer)

d4nt
quelle
21
Gut zu wissen, dass dieses Tool existiert, aber überlegen Sie auf jeden Fall, ob Sie es verwenden sollten oder nicht. Wenn Ihre Tabelle vertrauliche Daten enthält (z. B. Benutzer-E-Mails, Kennwörter, CC-Informationen, medizinische Informationen usw.), ist dies möglicherweise keine gute Idee. Diese Site speichert Ihre Daten möglicherweise nicht und ist möglicherweise sicher, aber Sie können dies nicht mit Sicherheit wissen.
Chris Schmitz
1
@DivyeshJesadiya Es ist kostenlos für alles bis zu 5000 Zeilen. Danach müssen Sie 10 US-Dollar für einen Monat bezahlen.
d4nt
@doxsi es scheint mir in Ordnung, was für ein Problem hattest du damit?
d4nt
@ChrisSchmitz wir sind sehr vorsichtig mit der Sicherheit und haben kürzlich einen Blog-Beitrag darüber geschrieben, wie wir SQLizer betreiben blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan
Es funktioniert, achten Sie auf das Excel-Format, xlt wird nicht akzeptiert, während xls akzeptiert wird.
Emanuel Pirovano
40

Im Folgenden finden Sie eine weitere Methode zum Importieren von Tabellenkalkulationsdaten in eine MySQL-Datenbank, für die keine zusätzliche Software erforderlich ist. Angenommen, Sie möchten Ihre Excel-Tabelle in die salesTabelle einer MySQL-Datenbank mit dem Namen importieren mydatabase.

  1. Wählen Sie die relevanten Zellen aus:

    Geben Sie hier die Bildbeschreibung ein

  2. In Mr. Data Converter einfügen und die Ausgabe als MySQL auswählen:

    Geben Sie hier die Bildbeschreibung ein

  3. Ändern Sie den Tabellennamen und die Spaltendefinitionen entsprechend Ihren Anforderungen in der generierten Ausgabe:

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. Wenn Sie MySQL Workbench verwenden oder bereits über mysqldie Befehlszeile angemeldet sind , können Sie die generierten SQL-Anweisungen aus Schritt 3 direkt ausführen. Fügen Sie andernfalls den Code in eine Textdatei ein (z. B. import.sql) und führen Sie diesen Befehl über eine Unix-Shell aus:

    mysql mydatabase < import.sql

    Weitere Möglichkeiten zum Importieren aus einer SQL-Datei finden Sie in dieser Antwort zum Stapelüberlauf .

thdoan
quelle
1
Dies war der einfachste Weg. Vielen Dank! Denken Sie daran, die zusätzliche Primärschlüssel-ID in SQL zu entfernen und ein AUTO-Inkrement Ihrer Wahl zu platzieren.
Fandango68
29

Es gibt tatsächlich mehrere Möglichkeiten, eine Excel-Datei mit unterschiedlichem Grad an Komplexität und Erfolg in eine MySQL-Datenbank zu importieren.

  1. Excel2MySQL . Zweifellos der einfachste und schnellste Weg, Excel-Daten in MySQL zu importieren. Es unterstützt alle Versionen von Excel und erfordert keine Office-Installation.

    Screenshot von Excel2MySQL

  2. LOAD DATA INFILE : Diese beliebte Option ist möglicherweise die technischste und erfordert ein gewisses Verständnis der Ausführung von MySQL-Befehlen. Sie müssen Ihre Tabelle vor dem Laden manuell erstellen und VARCHAR-Feldtypen mit geeigneter Größe verwenden. Daher sind Ihre Felddatentypen nicht optimiert. LOAD DATA INFILE hat Probleme beim Importieren großer Dateien, die die Größe 'max_allowed_packet' überschreiten. Besondere Aufmerksamkeit ist erforderlich, um Probleme beim Importieren von Sonderzeichen und fremden Unicode-Zeichen zu vermeiden. Hier ist ein aktuelles Beispiel, mit dem ich eine CSV-Datei mit dem Namen test.csv importiert habe.

    Geben Sie hier die Bildbeschreibung ein

  3. phpMyAdmin : Wählen Sie zuerst Ihre Datenbank und dann die Registerkarte Importieren aus. phpMyAdmin erstellt automatisch Ihre Tabelle und skaliert Ihre VARCHAR-Felder, optimiert jedoch nicht die Feldtypen. phpMyAdmin hat Probleme beim Importieren großer Dateien, die die Größe 'max_allowed_packet' überschreiten.

    Geben Sie hier die Bildbeschreibung ein

  4. MySQL für Excel : Dies ist ein kostenloses Excel-Add-In von Oracle. Diese Option ist etwas langwierig, da ein Assistent verwendet wird und der Import bei großen Dateien langsam und fehlerhaft ist. Dies kann jedoch eine gute Option für kleine Dateien mit VARCHAR-Daten sein. Felder sind nicht optimiert.

    Geben Sie hier die Bildbeschreibung ein

Panofish
quelle
Hallo @panofish, ich habe ein Excel, das täglich aktualisiert wird. Ich möchte nur die aktualisierten Daten in die MySQL-Datenbanktabelle und nicht in die gesamte Tabelle einfügen. (dh) pro Tag eine Zeile in den Tisch legen. Wie kann das gemacht werden?
Arun Raja
Diese Lösungen konzentrieren sich alle darauf, eine gesamte Tabelle zu laden und Ihre MySQL-Tabelle zu ersetzen oder an die Tabelle anzuhängen. Fügen die Änderungen neue Datensätze hinzu oder ändern sie vorhandene Datensätze?
Panofish
Sie überschreiben nur die Werte. Ich möchte jedoch, dass nur die Werte angehängt werden, die aufgrund des Datums noch nicht in der Datenbank vorhanden sind. Dies kann die Leistung steigern, indem nur einige Zeilen hinzugefügt werden, anstatt täglich viele Zeilen hinzuzufügen.
Arun Raja
2
Excel2MySQL-Tool sollte die Möglichkeit haben, nur das Datenbankskript zu erstellen :(
joseantgv
PHPMyAdmin war der einfachste und schnellste.
Amir Hajiha
2

Ich bin mir nicht sicher, ob Sie all dieses Setup haben, aber für mich verwende ich PHP und MYSQL. Also benutze ich eine PHP-Klasse PHPExcel. Dies nimmt eine Datei in fast jedem Format, xls, xlsx, cvs, ... und lässt Sie dann lesen und / oder einfügen.

Am Ende lade ich das Excel in ein phpexcel-Objekt und durchlaufe dann alle Zeilen. Basierend auf meinen Wünschen schreibe ich einen einfachen SQL-Einfügebefehl, um die Daten in der Excel-Datei in meine Tabelle einzufügen.

Am Frontend ist es ein wenig Arbeit, aber es geht nur darum, einige der vorhandenen Codebeispiele zu optimieren. Aber wenn Sie es gewählt haben, um Änderungen am Import vorzunehmen, ist dies einfach und schnell.

user1441213
quelle
1

Der beste und einfachste Weg ist die Verwendung der App "MySQL für Excel", die eine kostenlose App von Oracle ist. Diese App hat ein Plugin hinzugefügt, um Excel zu exportieren und Daten nach MySQL zu importieren. Sie können das hier herunterladen

Sadeq Shajary
quelle
1

Beim Verwenden von Textdateien zum Importieren von Daten hatte ich Probleme mit Anführungszeichen und der Formatierung von Zahlen durch Excel. In meiner Excel-Konfiguration wurde beispielsweise das Komma als Dezimaltrennzeichen anstelle des Punkts verwendet.

Jetzt verwende ich Microsoft Access 2010, um meine MySQL-Tabelle als verknüpfte Tabelle zu öffnen. Dort kann ich einfach Zellen von Excel nach Access kopieren und einfügen.

Installieren Sie dazu zuerst den MySql-ODBC-Treiber und erstellen Sie eine ODBC-Verbindung . Öffnen Sie dann im Zugriff auf der Registerkarte "Externe Daten" das Dialogfeld "ODBC-Datenbank" und verknüpfen Sie es über die ODBC-Verbindung mit einer beliebigen Tabelle.

Mit MySql Workbench können Sie Ihre Excel-Daten auch kopieren und in das Ergebnisraster von MySql Workbench einfügen. Ich habe in dieser Antwort detaillierte Anweisungen gegeben .

Christophe Weis
quelle
0

Für ein schrittweises Beispiel zum Importieren von Excel 2007 in MySQL mit korrekter Codierung (UTF-8) suchen Sie nach diesem Kommentar:

"Gepostet von Mike Laird am 13. Oktober 2010, 00:50 Uhr"

in der nächsten URL:

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

Raúl Moreno
quelle
0

Sie können DocChow verwenden , eine sehr intuitive GIU zum Importieren von Excel in MySQL, die auf den meisten gängigen Plattformen (einschließlich Linux) kostenlos ist.

Insbesondere, wenn Sie über Datum, Datum / Uhrzeit-Datentypen, DocChow problemlos mit Datentypen umgehen . Wenn Sie mit mehreren Excel-Tabellen arbeiten, die Sie in eine MySQL-Tabelle importieren möchten, erledigt DocChow die Drecksarbeit.

Seanj1000
quelle
0

Schritt 1 Erstellen Sie Ihre CSV-Datei

Schritt 2 Melden Sie sich bei Ihrem MySQL-Server an

     mysql -uroot -pyourpassword 

Schritt 3 Laden Sie Ihre CSV-Datei

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

Ein weiteres nützliches Tool und als MySQL-Front-End-Ersatz ist Toad for MySQL . Leider nicht mehr von Quest unterstützt , sondern eine brillante IDE für MySQL mit IMPORT- und EXPORT-Assistenten, die für die meisten Dateitypen geeignet sind.

Fandango68
quelle