CSV-Datei aus Excel im Vergleich zu CSV-Datei aus Libre Office

1

Ich habe mit Excel eine einfache CSV-Datei erstellt, die so aussieht: Bildbeschreibung hier eingeben

Dieselbe CSV-Datei habe ich auch mit Libre Office erstellt.

Beide .csv-Dateien sehen bei TextEdit absolut gleich aus:

id, questions
1, Hello World

Wenn ich jedoch versuche, sie unter PhpMyAdmin in die MySQL-Datenbank zu importieren, passiert etwas Überraschendes. Die letztere Datei wird ordnungsgemäß in die Datenbank importiert. Aber wenn ich versuche, die vorherige Datei zu importieren, erhalte ich die folgende Fehlermeldung:

Error
Static analysis:

5 errors were found during analysis.

A symbol name was expected! A reserved keyword can not be used as a column name without backquotes. (near "int" at position 46)
At least one column definition was expected. (near "int" at position 46)
Unexpected beginning of statement. (near "1" at position 50)
Unexpected beginning of statement. (near "`question`" at position 54)
Unrecognized statement type. (near "varchar" at position 65)
SQL query:

CREATE TABLE IF NOT EXISTS `Sample`.`TABLE 3` ( int(1), `question` varchar(5), `keywords` varchar(5), `answer` varchar(5)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'int(1), `question` varchar(5), `keywords` varchar(5), `answer` varchar(5)) DEFAU' at line 1

Wenn ich es richtig verstehe, tritt dieser Fehler auf, weil der Name der ersten Spalte in der CSV-Datei idein reserviertes Wort für die Datenbank ist. Trotzdem tritt dieser Fehler bei der in Libre Office erstellten CSV-Datei überhaupt nicht auf.

Warum passiert dies?

Poete Maudit
quelle
1
Möglicherweise müssen Sie Ihre Dateien mit einem Hex-Editor vergleichen, um den Unterschied zu verstehen. Texteditoren sind nicht gut, um nicht druckbare Zeichen anzuzeigen.
Máté Juhász

Antworten:

1

Die Idee, @Máté Juhászden Hex-Editor zu betrachten, war ziemlich gut.

Die CSV-Datei aus Excel zeigt den folgenden Inhalt im Hex-Editor an:

Ôªøid,name
1,hello

Die CSV-Datei von Libre Office zeigt Folgendes an:

id,name
1,Hello

Natürlich kann ich Libre Office für diese Aufgabe verwenden, wie ich es bisher immer getan habe. Ich wollte einfach zwei nützliche Funktionen in Excel nutzen.

Schließlich habe ich jedoch herausgefunden, dass ich diesen "Fehler" in der standardmäßigen CSV-Codierung von Excel erhalte, was CSV UTF-8 (Comma delimited) (.csv) aber nicht der Fall ist, wenn ich zur Comma-Separated Values (.csv)Codierung wechsle .

Lassen Sie mich @Pimp Juice ITzum Schluss festhalten , dass ich damit einverstanden bin, dass in der Art und Weise, wie die CSV-Datei aus Excel codiert wurde, vergessen wurde, den Namen der ersten Spalte der Tabelle in der Datenbank festzulegen. Aber ich wollte eine Erklärung finden, warum dies auf Excel-Ebene geschieht.

Poete Maudit
quelle
Ich sehe, dass die SQL-Anweisung als Teil des Prozesses generiert wird und nicht als manuelles Element. Interessant ....
Pimp Juice IT
Ja, ich habe einfach die CSV-Dateien in die Datenbank importiert. Ich habe keine Abfrage manuell geschrieben. Aber danke für deine Idee. :)
Poete Maudit
Die Byte Order Mark (BOM) wird häufig am Anfang von Unicode-Dateien eingefügt und als UTF-8-Zeichen mit drei Zeichen dargestellt. Anscheinend erwartet MySQL eine Nicht-Unicode-Codierung.
Jim K
Ja, so sieht es bei @JimK aus.
Poete Maudit