Wie importiere ich eine CSV-Datei in die MySQL Workbench?


88

Ich habe eine CSV-Datei. Es enthält 1,4 Millionen Datenzeilen, daher kann ich diese CSV-Datei nicht in Excel öffnen, da ihr Limit bei etwa 1 Million Zeilen liegt.

Daher möchte ich diese Datei in die MySQL Workbench importieren. Diese CSV-Datei enthält Spalten wie

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Ich versuche, eine Tabelle in der MySQL-Workbench mit dem Namen "Dummy" zu erstellen, die Spalten wie enthält

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

Die CSV-Datei heißt model.csv. Mein Code in der Workbench sieht folgendermaßen aus:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

aber ich bekomme einen fehler wie model.CSV file not found


Sie können dies auch im Importassistenten von dbForge Studio für MySQL tun . Es generiert automatisch eine Tabelle auf diese Weise prnt.sc/e5iqy1
Devart

Antworten:


138

Ich denke, Sie vermissen die ENCLOSED BY-Klausel

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Geben Sie den vollständigen Pfad der CSV-Datei an

Load Data Infile - MySQL-Dokumentation


1
Vielen Dank, ich erhalte keinen Fehler in diesem Befehl. Ich erhalte jedoch einen Fehler wie die Datei model.csv, die nicht gefunden wurde.
Diese

CSV-Datei ist in meinem System-Desktop gespeichert
vps

5
UPDATE: Wenn Sie Zeichenfolgen mit nicht standardmäßigen Zeichen importieren, ist es hilfreich, die Anweisung auf "CHARACTER SET utf8" hinzuweisen: LOAD DATA LOCAL INFILE '/path/to/file.csv' IN TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' Zeilen, die mit '\ n' abgeschlossen sind; Die
Zieltabelle

1
Auch sollte man das Schlüsselwort LOCAL nicht vergessen, Ihre Anfrage ist genau richtig
Brij Raj Singh - MSFT

2
Arbeitete "Art-of" unter Windows 7 mit MySQL Workbench 6.2. Ich musste doppelte Schrägstriche verwenden '//path//to//your//csv//file//model.csv'und alle Felder mit einzelnen Schrägstrichen brachen.
576i

69

Wenn Sie einen kleineren Datensatz haben, können Sie dies über die GUI erreichen:

  1. Öffnen Sie ein Abfragefenster
  2. SELECT * FROM [Tabellenname]
  3. Wählen Sie Importieren aus der Menüleiste
  4. Klicken Sie unten rechts unter dem Ergebnisraster auf Übernehmen

Geben Sie hier die Bildbeschreibung ein

Referenz: http://www.youtube.com/watch?v=tnhJa_zYNVY


12
Nur eine Notiz. Diese Importoption gibt es nur auf Windows-Computern. Die Plugins sind anscheinend immer noch .NET-basiert, funktionieren also nicht unter Linux oder Mac.
BrianC

8
Vergessen Sie nicht, nach dem Importieren auf Übernehmen zu klicken.
Steve Pitchers

7
Achtung, das kann sehr langsam sein. Es dauerte ein paar Stunden bis 25.000 Reihen
Rob Sedgwick

2
Die Zeitdauer scheint sehr hardwareabhängig zu sein. Mein Heimcomputer ist in 10K-Zeilen vollständig verstopft. Mein Arbeitscomputer hat gerade 243K Zeilen mit ungefähr 200 Spalten in 85 Sekunden importiert.
KathyA.

2
@BrianC Dies scheint nicht mehr der Fall zu sein, es erscheint für mich in der Linux-Version.
Jammerx2

20

Klicken Sie im Navigator unter SCHEMAS mit der rechten Maustaste auf Ihr Schema / Ihre Datenbank und wählen Sie "Assistent zum Importieren von Tabellendaten".

Funktioniert auch für Mac.


Dies funktionierte für mich unter Ubuntu 18.04 beim Erstellen einer neuen Tabelle aus dem CSV. Mit dieser Methode konnte ich jedoch keine Daten zu einer vorhandenen Tabelle hinzufügen.
LP Whigley

2

Danke :) es hat mein Problem gelöst. Wir können den Spaltennamen später von der Benutzeroberfläche ändern (nicht für Experten), sobald er importiert wird ...
vipul kumawat

versuchte viele Dinge, die nicht funktionierten, aber dies tat es schließlich. Es funktionierte auch ohne Probleme mit den Einstellungen für lokale Dateninfile. Ich vermute, MySQL führt stattdessen Inserts aus.
Peppershaker

1

Derzeit ist es nicht möglich, eine CSV (mit MySQL Workbench) auf allen Plattformen zu importieren, und es wird auch nicht empfohlen, wenn sich diese Datei nicht auf demselben Host wie der MySQL-Server-Host befindet.

Sie können jedoch mysqlimport verwenden .

Beispiel:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

In diesem Beispiel mysqlimportwird angewiesen, alle Dateien mit dem Namen "sales" mit einer Erweiterung zu laden, die mit "part_" beginnt. Dies ist eine bequeme Möglichkeit, alle im Beispiel "Teilen" erstellten Dateien zu laden. Verwenden Sie die Option --compress, um den Netzwerkverkehr zu minimieren. Die Option --fields-terminated-by = ',' wird für CSV-Dateien verwendet, und die Option --local gibt an, dass sich die eingehenden Daten auf dem Client befinden. Ohne die Option --local sucht MySQL nach den Daten auf dem Datenbankhost. Geben Sie daher immer die Option --local an.

In der AWS RDS-Dokumentation finden Sie nützliche Informationen zu diesem Thema .


0

Wenn sich der Server auf einem Remotecomputer befindet, stellen Sie sicher, dass sich die Datei auf dem Remotecomputer und nicht auf Ihrem lokalen Computer befindet.

Wenn sich die Datei auf demselben Computer befindet, auf dem sich der MySQL-Server befindet, stellen Sie sicher, dass der MySQL-Benutzer über die Berechtigung zum Lesen / Schreiben der Datei verfügt, oder kopieren Sie die Datei in das MySQL-Schema-Verzeichnis:

In meinem Fall in Ubuntu war es: /var/lib/mysql/db_myschema/myfile.csv

Auch nicht in Bezug auf dieses Problem, aber wenn Sie Probleme mit den neuen Zeilen haben, verwenden Sie sublimeTEXT, um die Zeilenenden in das WINDOWS-Format zu ändern, die Datei zu speichern und es erneut zu versuchen.


0

Es scheint ein wenig knifflig zu sein, da es mich lange Zeit wirklich gestört hat.

Sie müssen nur die Tabelle öffnen (Rechtsklick auf "Select Rows-Limit 10000") und Sie öffnen ein neues Fenster. In diesem neuen Fenster finden Sie "Importsymbol".

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.