wenn ich in LibreOffice eine Tabelle ohne Formate und Formel als UTF-8 CSV speichere und diese dann in MySQL 5.1.30 (Version kan ich nicht ändern) importieren will, erhalte ich diese Meldung:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'zahlende_Mitglieder, lfd_Nr, Mitglied_Nr, Namen, Vorname, Famili' at line 1
Ich finde aber im Netz keinen Hinweis, was an der Schreibweise falsch ist.
> wenn ich in LibreOffice eine Tabelle ohne Formate und Formel als UTF-8 > CSV speichere und diese dann in MySQL 5.1.30 (Version kan ich nicht > ändern) importieren will, erhalte ich diese Meldung:
> #1064 - You have an error in your SQL syntax; check the manual that > corresponds to your MySQL server version for the right syntax to use > near 'zahlende_Mitglieder, lfd_Nr, Mitglied_Nr, Namen, Vorname, Famili' > at line 1
Wie "importierst" Du sie denn?
Eine CSV (comma separated values) ist, wie der Name schon sagt, eine
Liste mit Daten, die durch Kommata getrennt sind. Sonst nichts.
Insbesondere enthält sie keine SQL-Anweisungen, kann also nicht direkt
als Script eingelesen werden. Genau das scheinst Du aber zu versuchen,
was zu der Fehlermeldung führt.
Claus Reibenstein wrote:
> Heiko Rompel schrieb:
>> wenn ich in LibreOffice eine Tabelle ohne Formate und Formel als UTF-8
>> CSV speichere und diese dann in MySQL 5.1.30 (Version kan ich nicht
>> ändern) importieren will, erhalte ich diese Meldung:
>> #1064 - You have an error in your SQL syntax; check the manual that
>> corresponds to your MySQL server version for the right syntax to use
>> near 'zahlende_Mitglieder, lfd_Nr, Mitglied_Nr, Namen, Vorname, Famili'
>> at line 1
> Wie "importierst" Du sie denn?
> Eine CSV (comma separated values) ist, wie der Name schon sagt, eine
> Liste mit Daten, die durch Kommata getrennt sind. Sonst nichts.
> Insbesondere enthält sie keine SQL-Anweisungen, kann also nicht direkt
> als Script eingelesen werden. Genau das scheinst Du aber zu versuchen,
> was zu der Fehlermeldung führt.
Es ist nicht einmal klar, dass hier überhaupt PHP verfügbar ist. MySQL kann CSV-Dateien auch ohne PHP-Unterstützung importieren (phpMyAdmin bietet ein hybrides UI dafür); das Format muss aber stimmen.
> Eine CSV (comma separated values) ist, wie der Name schon sagt, eine
> Liste mit Daten, die durch Kommata getrennt sind. Sonst nichts.
Schon klar.
> Insbesondere enthält sie keine SQL-Anweisungen, kann also nicht direkt
> als Script eingelesen werden. Genau das scheinst Du aber zu versuchen,
> was zu der Fehlermeldung führt.
> Es ist nicht einmal klar, dass hier überhaupt PHP verfügbar ist. MySQL kann
> CSV-Dateien auch ohne PHP-Unterstützung importieren (phpMyAdmin bietet ein
> hybrides UI dafür); das Format muss aber stimmen.
Wenn ich die Informationen dort richtig interpretiere, dann müssen die Daten nicht nur Kommagetrennt sein, sondern Texte auch in Hochkomma eingeschlossen - richtig?
>> Es ist nicht einmal klar, dass hier überhaupt PHP verfügbar ist. MySQL kann
>> CSV-Dateien auch ohne PHP-Unterstützung importieren (phpMyAdmin bietet ein
>> hybrides UI dafür); das Format muss aber stimmen.
> Wenn ich die Informationen dort richtig interpretiere, dann müssen die > Daten nicht nur Kommagetrennt sein, sondern Texte auch in Hochkomma > eingeschlossen - richtig?
Falsch. Du hast nicht weit genug gelesen:
,----------
| Wenn Sie keine FIELDS-Klausel angeben, entsprechen die
| Vorgabeeinstellungen dem Folgenden:
|
| FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
|
| Wenn Sie keine LINES-Klausel angeben, entsprechen die
| Vorgabeeinstellungen dem Folgenden:
|
| LINES TERMINATED BY '\n' STARTING BY ''
|
| Anders gesagt, die Standardwerte bewirken, dass LOAD DATA INFILE sich
| beim Einlesen wie folgt verhält:
|
| • Es wird nach Zeilenbegrenzungen bei Zeilenumbrüchen gesucht.
|
| • Zeilenpräfixe werden nicht übersprungen.
|
| • Zeilen werden bei Tabulatoren in Felder unterteilt.
|
| • Felder müssen nicht innerhalb von Anführungszeichen abgeschlossen
| werden.
|
| • Fälle von Tabulatoren, Zeilenumbrüchen oder ‘\’, denen ‘\’
| vorangeht, werden als literale Zeichen interpretiert, die Teile von
| Feldwerten sind.
`----------
Standardmäßig müssen die Daten also durch Tabulatoren getrennt sein und
brauchen nicht in Hochkomma oder ähnliches eingeschlossen zu werden.
Claus Reibenstein wrote:
> […]
> ,----------
> | Wenn Sie keine FIELDS-Klausel angeben, entsprechen die
> | Vorgabeeinstellungen dem Folgenden:
> |
> | FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
> |
> | Wenn Sie keine LINES-Klausel angeben, entsprechen die
> | Vorgabeeinstellungen dem Folgenden:
> |
> | LINES TERMINATED BY '\n' STARTING BY ''
> |
> | Anders gesagt, die Standardwerte bewirken, dass LOAD DATA INFILE sich
> | beim Einlesen wie folgt verhält:
> |
> | • Es wird nach Zeilenbegrenzungen bei Zeilenumbrüchen gesucht.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> |
> | • Zeilenpräfixe werden nicht übersprungen.
> |
> | • Zeilen werden bei Tabulatoren in Felder unterteilt.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> |
> | • Felder müssen nicht innerhalb von Anführungszeichen abgeschlossen
^^^^^^^^^^^^
> | werden.
> |
> | • Fälle von Tabulatoren, Zeilenumbrüchen oder ‘\’, denen ‘\’
> | vorangeht, werden als literale Zeichen interpretiert, die Teile von
> | Feldwerten sind.
> `----------
Argh. Das nächste Mal poste ich doch lieber wieder einen Link auf die englischsprachige Originalversion als auf diese pseudo-deutschsprachige Übersetzung.
Ich danke Euch erstmal für Eure Antworten.
Das Problem sitzt mal wieder vor dem Schirm.
Ich wollte eine Exceltabelle mittel phpMyAdmin nach MySQL importieren
und zwar mit der Import-Funktion.
Diese ist aber zum Importieren vom MySQL-Tabellen.
Ich muß jetzt also erst mal aus der Excel-Tabelle (erste Zeile enthält die Spaltennamen) eine MySQL-Tabelle machen und diese dann importieren.
Der werde ich mich wohl tiefer mit beschäftigen müssen.
Wenn ich nicht weiter komme darf ich hoffentlich erneut hier fragen?!
Ein Ex- und Import über CSV klappt wohl (mit viel "Handarbeit"), ist aber kompliziert.
Besser:
Unter phpMyAdmin kannst Du direkt eine Tabelle aus einem OpenOffice Spreadsheet erstellen lassen!
Mache eine (neue, "saubere") Datei "neutafel.ods" und mache im ersten Spreadsheet Deine Daten rein (Copy&Paste). In die erste Zeile kommen die Bezeichner (wie gewohnt, in "ASCII", soll heißen nur A..Z und a..z). Benenne das Spreadsheet auch in "neutafel" um (Rechtsklick auf den Reiter "Sheet1").
Speichern und schließen(!)
Unter phpMyAdmin in die Datenbank wechseln, oben "Import" anwählen.
Datei "neutafel.ods" auswählen. Die Import-Optionen wandeln sich zu "OpenOffice Spreadsheet blabla".
OK wählen.
Ein bißchen warten.
Du hast eine neue Tabelle "neutafel" automatisch angelegt mit den Inhalten des Spreadsheets, korrekten Spalten-Typen etc.