Frage

Ich versuche, eine CSV-Datei in eine MySQL-Tabelle zu importieren über phpMyAdmin .

Die CSV-Datei durch Rohre getrennt ist, formatiert wie folgt:

data|d'ata|d'a"ta|dat"a|
data|"da"ta|data|da't'a|
dat'a|data|da"ta"|da'ta|

Die Daten enthalten Anführungszeichen. Ich habe keine Kontrolle über das Format, in dem ich die Daten empfangen - es von einem Dritten erzeugt wird,

.

Das Problem kommt, wenn es eine ist | gefolgt von einem doppelten Anführungszeichen . Ich habe immer eine „invalid Feldanzahl in CSV-Eingang auf der Leitung N“ Fehler.

Ich bin die Datei von der Importseite hochladen, mit Latin1, CSV, beendet durch |., Getrennt durch“

Ich möchte nur Ändern Sie den "umschlossen von" Zeichen , aber ich erhalte "Ungültige Parameter für den CSV-Import: Felder eingeschlossen von" . Ich habe ohne Erfolg verschiedene Charaktere ausprobiert.

Wie kann ich sagen, MySQL dieses Format in phpMyAdmin zu akzeptieren?

diese Tabellen Einrichten ist der erste Schritt, ein Programm zu schreiben, die in gzip-CSV-Dateien hochgeladen werden verwenden Sie den Katalog einer E-Commerce-Website zu erhalten.

War es hilfreich?

Lösung

Ich habe ein ähnliches Problem für die letzten Stunden wurde und ich habe endlich einen Import zu arbeiten, so werde ich meine Lösung teilen, auch wenn es das ursprüngliche Plakate bekommen kann nicht helfen.

Kurzversion:
1.) wenn eine Excel-Datei, speichern als ODS (offenes Dokument Tabelle) Format. 1a.) Wenn die Datei eine Art Textformat mit Trennzeichen ist (wie das ursprüngliche Plakat) hat, dann öffnen Sie Excel, und einmal in Excel verwenden Sie Datei / Öffnen, um die Datei zu öffnen. Es wird Sie in der Lage sein, die geeigneten Trennzeichen auszuwählen, um die Datei anzuzeigen. Stellen Sie sicher, dass die Datei sieht in Ordnung, speichern Sie dann als ODS-Format (und schließen Sie die Datei).

2.) Öffnen Sie die Datei in Openoffice Calc (kostenlosen Download von Oracle / Sun). 2a.) Drücken Sie Strg-F öffnen das Dialogfeld Suchen. Klicken Sie auf Weitere Optionen, und stellen Sie sicher, „Current Selection Only“ wird nicht geprüft. 2b.) Die Suche nach doppelten Anführungszeichen. Wenn es keine in der Datei sind, können Sie die Schritte 4 und 5
überspringen 3.) Speichern unter -> Text CSV. Wählen Sie Optionen für UTF-8-Format (Taste „u“ 3 mal dort schnell zu bekommen), wählen Sie „;“ (Semikolon) als Trennzeichen, und wählen Sie doppelte Anführungszeichen für Text. 4.) Wenn es irgendwelche doppelten Anführungszeichen in Ihrer Datei in Schritt 2b gefunden, weiter, sonst importiert nur die Datei als CSV mit phpMyAdmin (siehe Schritt 6). Es sollte funktionieren. 5a) Öffnen in Word oder einem anderen Texteditor, wo Sie finden tun. -> Alle ersetzen
. Finden 5b.) Alle Instanzen von drei doppelten Anführungszeichen in einer Reihe mit der Suche nach „““(wenn Sie tun finden, könnten Sie sogar suchen mögen für 4, 5, 6 usw. in einer Reihe, bis Sie leer kommen). 5c.) Ersetzen Sie die „““mit einem Platzhalter, die nirgendwo sonst in Ihrer csv gefunden wird. Ich ersetzte sie durch‚abcdefg‘. Finden 5d). -> Ersetzen Sie alle Instanzen von „“ (zwei doppelte Anführungszeichen in einer Reihe) mit \“(Schrägstrich und doppelte Anführungszeichen). . 5e) Finden -> Ersetzen Sie alle Instanzen von abcdefg (oder den gewählten Platzhalter aus Schritt 5c) mit \ „“. 5c und dieser Schritt sicherstellen, dass alle Zitate am Ende eines Feldes auftreten kurz vor dem Text Begrenzungs Zitat sind richtig ‚entkommen‘. 5f.) Schließlich speichern Sie die Datei, hält in UTF-8 (oder was auch immer Format, das Sie für den Import benötigen). 6.a) In phpMyAdmin, klicken Sie auf die Registerkarte „Import“, klicken Sie auf „Datei auswählen“ Taste und wählen Sie die Datei, die Sie gerade gespeichert. 6b.) Unter ‚Format der importierten Datei‘ sollte CSV ausgewählt werden. Wenn Spaltennamen in der ersten Reihe sind, stellen Sie sicher, dass Kontrollkästchen aktiviert ist. Am wichtigsten ist, ‚beendet Felder durch‘ gesetzt werden sollte; (Semikolon), ‚Felder eingeschlossen von‘ sollte "(doppelte Anführungszeichen) gesetzt werden, und‚Fields entkam durch‘sollte (Schrägstrich) auf \ eingestellt werden. Sie setzen, dass durch folgenden Schritt 3 in der Datei, und wenn notwendig durch die Schritte 5a folgenden -. 5f

7.) Klicken Sie auf "Go" und beten Sie nicht nur noch eine Stunde verschwenden haben.

Nun, da die kurze Version dieses lange sich herausgestellt hat, werde ich die lange Version überspringen.

es genügt zu sagen, scheint es mit dem Import durch phpMyAdmin 2 große Probleme zu sein. 1.) Es gibt eine Art von Speicherproblem, die große Excel und ODS-Dateien verhindert (wie groß ist groß? Noch nicht sicher) importiert. 2.) Weder Openoffice noch Excel scheinen ihre CSV-Dateien in einer Art und Weise zu speichern, die mit phpMyAdmin kompatibel ist. Sie wollen doppelte Anführungszeichen mit doppelten Anführungszeichen entkommen. phpMyAdmin will doppelte Anführungszeichen mit etwas anderem entkommen, wie Schrägstrich.

Das erste Problem wird hoffentlich in einem Update von phpMyAdmin fixiert werden (und / oder die Excel-Import-Add-on 'PHPExcel'). Der zweite fixierte werden könnte, wenn es eine einfache Möglichkeit, die Escape-Zeichen für Excel oder ODS-Dateien als CSV gespeichert zu ändern, oder wenn phpMyAdmin mit ihrem Format kompatibel gemacht werden könnte (das eigentlich ziemlich einfach sein sollte. Einfach hat es das gleiche ausführen finden ersetzen Maßnahmen, die wir manuell oben ausgeführt, um das doppelte Anführungszeichen Problem zu umgehen).

Ich hoffe, das jemand hilft, wie ich 3-4 Stunden die Entdeckung dieser Lösung und eine weitere Stunde verbrachte sie hier zu schreiben. Ich hoffe, es ist nicht zu lang, aber ich hatte gehofft, dass die Menschen von Null auf allen Ebenen des Know-how zu helfen, wherever Ich bin (wahrscheinlich etwa 0,1).

Andere Tipps

fand ich einen Hack, das funktioniert - ich verwende den $ als „umschlossen von“ Charakter und alles ist gut. Da dies für eine europäische Seite ist, weiß ich, dass sie es nie in den Tabelleninhalt verwenden werden.

Sie können die CSV-Dateien ändern, indem ein \ vor jeder Zugabe Recht?

Haben Sie versucht, die Boxen Blanking, die „Felder eingeschlossen von“ und „Fields entkam durch“ lesen? Ich habe nicht phpMyAdmin, aber Google schlägt vor, andere hatten Erfolg mit dieser Methode .

Sie sollten erwägen nur Ihren eigenen LOAD DATA INFILE Abfrage, scheint, wie Sie sowieso brauchen, da dieser Prozess irgendwann Teil einer Anwendung sein wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top