ich möchte mittels LOAD DATA LOCAL INFILE eine Textdatei importieren die
Backslashes enthält. Mir steht dazu PHP zur Verfügung.
Nun bin ich mit meinem Latein
- Backslashes mittels preg_replace() zu verdoppteln bzw.
- mit mysql_real_escape_string() mysql konform zu maskieren
am Ende, da die Zeilenumbrüche \n durch solche Sachen verloren gehen.
Weiß jmd. eine gute Lösung?
MFG Daniel
Ohne die Daten zu sehen und zu wissen, wieso es load data infile sein
muss (hast du so viele Daten, dass INSERT zu langsam ist?), kann man
nichts sagen.
KP
> ich möchte mittels LOAD DATA LOCAL INFILE eine Textdatei importieren die
> Backslashes enthält. Mir steht dazu PHP zur Verfügung.
OK.
> Nun bin ich mit meinem Latein
>
> - Backslashes mittels preg_replace() zu verdoppteln bzw.
> - mit mysql_real_escape_string() mysql konform zu maskieren
Weshalb sollte etwas davon nötig sein?
<http://dev.mysql.com/doc/refman/5.1/en/load-data.html>
> am Ende, da die Zeilenumbrüche \n durch solche Sachen verloren gehen.
>
> Weiß jmd. eine gute Lösung?
Nein, es fe lt leider das Problem.
<http://www.tty1.net/smart-questions_de.html>
--
PointedEars
Das Problem ist, das BAckslashes beim Import mit LOAD DATA LOCAL INFILE
verloren gehen. Ist das eine Server Sache?
Grüße Daniel
> [Thomas 'PointedEars' Lahn wrote:]
Das ist AFAIK eher eine Frage des falschen Dateiformats (Backslashes nicht
mit "\\" escaped) oder des falschen Parameters für LOAD DATA … INFILE …
ESCAPED BY …. Mit PHP hat das alles wenig zu tun.
Bitte lass je Zitatebene eine Einleitungszeile stehen, und kürz Zitate
sinnerhaltend. Obiges habe ich *so* _nicht_ geschrieben.
<http://lernst.de/zitieren/kriegst.de/antworten>
--
PointedEars
Wie kann ich das Problem lösen? Die Backslashes sind nicht mit \\ escaped!
Grüße Daniel
[Einleitungszeile ergänzt]
vvvvvvvvvvvvvvvvvvvvvvvv
> [Thomas 'PointedEars' Lahn:]
Wie Karl schon schrieb: Poste *relevante* Beispieldaten und den *relevanten*
PHP-Code, mit dem Du die Daten importieren willst. Mindestens eine Angabe
der verwendeten PHP- und MySQL-Version wäre auch sehr sinnvoll. Obwohl ich
Dir verschiedene Lösungen anbieten könnte, muss keine davon bei Dir
funktionieren, da ich Deine Daten und Deinen Code nicht kenne. Es wäre also
für alle nur verschwendete Zeit. Das hier ist kein Ratespiel.
Und ich bitte Dich hiermit ein letztes Mal, beim Zitieren die
Einleitungszeile stehen zu lassen. Auf die Gründe dafür habe ich Dich
bereits hingewiesen. Weitere Nichtbeachtung dieser Bitte wird zur Folge
haben, dass ich Deine Postings ignoriere.
<http://www.tty1.net/smart-questions_de.html>
<http://www.php-faq.de/>
Score adjusted
--
PointedEars
> Wie Karl schon schrieb: Poste *relevante* Beispieldaten und den *relevanten*
> PHP-Code, mit dem Du die Daten importieren willst. Mindestens eine Angabe
> der verwendeten PHP- und MySQL-Version wäre auch sehr sinnvoll. Obwohl ich
Ich hoffe ich habe jetzt richtig zitiert. Das ist ja wie beim Bauamt.
mysql_query("DATA LOCAL INFILE 'textdatei_mit_einfachen_backslashes.txt'
INTO TABLE Testberichte FIELDS TERMINATED BY '|' LINES TERMINATED BY
'\n'") OR die (mysql_error());
PHP-Version: 4.4.9
MySQL-Version: 4.0.27-standard
Grüße Daniel
--
Hoffentlich das richtige Formular richtig ausgefüllt.
> Thomas 'PointedEars' Lahn schrieb:
>> Wie Karl schon schrieb: Poste *relevante* Beispieldaten und den
>> *relevanten* PHP-Code, mit dem Du die Daten importieren willst.
>> Mindestens eine Angabe der verwendeten PHP- und MySQL-Version
>> wäre auch sehr sinnvoll. [...]
>
> Ich hoffe ich habe jetzt richtig zitiert.
Hast Du. Deine Signatur passt aber noch nicht, sie sollte mit "-- " (Minus,
Minus, Leerzeichen, Zeilenumbruch) abgetrennt sein.
Siehe auch:
- news:de.newusers.infos
- news:de.newusers.questions
- news:de.test
> Das ist ja wie beim Bauamt.
Dazu schreib' ich höflicherweise jetzt mal nichts.
> mysql_query("DATA LOCAL INFILE 'textdatei_mit_einfachen_backslashes.txt'
> INTO TABLE Testberichte FIELDS TERMINATED BY '|' LINES TERMINATED BY
> '\n'") OR die (mysql_error());
Mindestens eine Beispielzeile aus 'textdatei_mit_einfachen_backslashes.txt'
fe lt noch für die Analyse. Jedoch:
> PHP-Version: 4.4.9
> MySQL-Version: 4.0.27-standard
Relevant wäre dann <http://dev.mysql.com/doc/refman/4.1/en/load-data.html>.
Nur: Das ist beides hoffnungslos veraltet; den betreffenden Server sollte
man aus Sicherheitsgründen sofort vom Netz nehmen!
Der Support für PHP 4.x wurde mit Ablauf des Jahres 2007 (CE)¹, der für
MySQL 4.0 mit Ablauf des 30. September 2006 (Active) bzw. des 30. September
2008 (Extended) eingestellt (die Dokumentation dafür wird voraussichtlich
Ende dieses Jahres vom Netz genommen).²
Insbesondere unterstützt MySQL 4.0.x nicht die Angabe einer Zeichencodierung
für Datenbanken, Tabellen und Felder (das wurde erst mit 4.1 eingeführt), es
ist also für den Import von Textdaten (die heutzutage gern UTF-8-codiert
vorliegen) denkbar ungeeignet.
_________
¹ <http://de.php.net/releases/>
² <http://dev.mysql.com/doc/refman/4.1/en/>
<http://www.mysql.com/about/legal/lifecycle/#calendar>
--
kopfschüttelnd,
PointedEars