Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

von LibreOffice via CSV zu MySQL

89 views
Skip to first unread message

Heiko Rompel

unread,
Oct 15, 2012, 4:53:48 PM10/15/12
to
Hallo,

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.

Könnt Ihr mal wieder helfen?

Gruß Heiko

Claus Reibenstein

unread,
Oct 15, 2012, 5:29:51 PM10/15/12
to
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.

Auf <http://www.php-faq.de/q-mysql-csv-import.html> findest Du Hinweise,
wie man eine CSV-Datei importieren kann.

Gruß
Claus

Thomas 'PointedEars' Lahn

unread,
Oct 15, 2012, 5:36:51 PM10/15/12
to
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.

ACK.

> Auf <http://www.php-faq.de/q-mysql-csv-import.html> findest Du Hinweise,
> wie man eine CSV-Datei importieren kann.

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.

<http://dev.mysql.com/doc/refman/5.1/de/load-data.html>

--
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Heiko Rompel

unread,
Oct 16, 2012, 12:47:23 AM10/16/12
to
Hallo,Claus Reibenstein schrieb:

> Wie "importierst" Du sie denn?
Mittels phpMyAdmin und der Importfunktion.
>
> 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.

Nee, siehe oben.

Gruß HEiko

Heiko Rompel

unread,
Oct 16, 2012, 12:52:55 AM10/16/12
to
Hallo,Thomas 'PointedEars' Lahn schrieb:

> 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.
>
> <http://dev.mysql.com/doc/refman/5.1/de/load-data.html>

Wenn ich die Informationen dort richtig interpretiere, dann müssen die
Daten nicht nur Kommagetrennt sein, sondern Texte auch in Hochkomma
eingeschlossen - richtig?

Gruß Heiko

Claus Reibenstein

unread,
Oct 16, 2012, 3:26:17 AM10/16/12
to
Heiko Rompel schrieb:

> Hallo,Thomas 'PointedEars' Lahn schrieb:
>
>> 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.

Dein Reader ist falsch eingestellt.

>> <http://dev.mysql.com/doc/refman/5.1/de/load-data.html>
>
> 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.

Gruß
Claus

Claus Reibenstein

unread,
Oct 16, 2012, 3:30:13 AM10/16/12
to
Heiko Rompel schrieb:

> Hallo,Claus Reibenstein schrieb:
>
>> Wie "importierst" Du sie denn?
>
> Mittels phpMyAdmin und der Importfunktion.

Hast Du dort auch "CSV mit LOAD DATA" angewählt und die richtigen
Optionen eingestellt?

Gruß
Claus

Thomas 'PointedEars' Lahn

unread,
Oct 16, 2012, 1:07:31 PM10/16/12
to
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.

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

Heiko Rompel

unread,
Oct 20, 2012, 2:00:22 PM10/20/12
to
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?!

Gruß HEiko

Gunnar Lindenblatt

unread,
Jan 11, 2013, 5:13:26 AM1/11/13
to
Hallo Heiko!

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.

Tabelle umbenennen, evtl. Spalten umbenennen, Indices, externe Referenzierungen (external keys) anlegen, fertig!


Tatsächlich ist das Anlegen einer neuen Tabelle mittels OpenOffice so bequem, daß ich gar keine Tabellen mehr "von Hand" (unter SQL) anlege!


Gruß

Gunnar




--
Adresstausch: http://www.eMail2address.com/
Büchertausch: http://www.bookcrossing.com/
deutsch-chinesisches Studienhandbuch: http://chinabridge.daibola.biz/
deutsch-chinesisches Wörterbuch: http://www.DeHanCi.com/

0 new messages