php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.06.2008, 17:02  
Neuer Benutzer
 
Registriert seit: 22.02.2008
Beiträge: 6
knödelkopf
Standard Probleme mit "load data infile" nach Serverupgrade

Ich habe unseren MySQL Server umgezogen (Windows ->Windows), und dabei ein Upgrade von MySQL 4.1 auf 5.0.51 durchgeführt. Auf dem Server lief bisher ein Skript, welches täglich bestimmte CSV-Dateien importiert. Die Tabellen auf dem alten und neuen Server haben jeweils als Charset Latin1 eingestellt. Während nun bisher die Daten korrekt importiert wurden, wenn Umlaute in den Textfeldern enthalten waren, werden dafür jetzt in der Tabelle ? angezeigt. Ich habe natürlich schon versucht das Charset der Import Tabelle auf dem neuen Server auf utf8 umzustellen, hat aber nichts gebracht. Immer noch werden Umlaute als ? importiert.

Das Import SQL sieht ungefähr so aus:

Code:
load data infile "c:\\temp\\dat.csv"
  replace
  into table tmp_dat_import
  fields terminated by ','
  optionally enclosed by '"'

(
   ANBIETER
  ,ANG_DATUM
  ,ANZINS
  ,ART_NR
....
....
)
;
Ein Schnipsel aus der Importdatei sieht etwa so aus:

"M",2008-06-06,1,35,"NA",0,0,2008,23,"SÜW","RÖSSLER"

Hierbei würde es Probleme mit den Umlauten bei "SÜW" und "RÖSSLER" geben.

Da es sich um eine temporäre Importtabelle handelt, wird die jedes Mal gelöscht bevor neue Daten importiert werden. Ich kann also prinzipiell schnell testen was das Umstellen des Charsets vor einem Import bewirkt. Ich kann nur leider Null Unterschied bei den importierten Daten sehen, egal welches Charset ich für die Tabelle einstelle.

my.ini sagt übrigens:

[mysql]
default-character-set=utf8

Wer kann helfen?
knödelkopf ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.06.2008, 18:54  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

entweder du konvertierst deine csv in utf-8 oder du schaust dir das mal an:

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

Zitat:
Der von der Systemvariablen character_set_database angegebene Zeichensatz wird zur Interpretation der Daten in der Datei verwendet. SET NAMES und die Einstellung von character_set_client wirken sich hingegen nicht auf die Interpretation der Eingabe aus.
sollte im 5.0er manual genauso stehen.
robo47 ist offline   Mit Zitat antworten
Alt 16.06.2008, 10:43  
Neuer Benutzer
 
Registriert seit: 22.02.2008
Beiträge: 6
knödelkopf
Standard

Ehrlich gesagt verstehe ich nicht was Du mit
...

Zitat:
entweder du konvertierst deine csv in utf-8
...
meinst. Die CSV-Datei hat natürlich keine explizite Angabe eines Zeichensatzes. Lasse ich mir die Datei z.B. in Notepad++ ANSI codiert anzeigen, erscheinen die Umlaute korrekt. Schalte ich allerdings auf utf-8 um, sehe ich nur Quadrate anstelle der Umlaute. Wie kann ich denn die ANSI Datei so ändern, dass sie auch utf8 codiert funktioniert? Oder anders gefragt: Wie muss ich alles konfigurieren damit MySQL eine simple Textdatei mit Umlauten einlesen kann!

MANN!! Früher mit MySQL 4 war das völlig stressfrei mit den Sonderzeichen, aber auf dem MySQL 5.x Server kämpfe ich mit jeder einzelnen Anwendung

MySQL Admin sagt mir übrigens für alle Characterset Systemvariablen utf-8, bzw. utf8_general_ci für die Collations. Die Tabelle, in die importiert werden soll, ist wie gesagt auch utf8 codiert.
knödelkopf ist offline   Mit Zitat antworten
Alt 16.06.2008, 11:18  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
MySQL Admin sagt mir übrigens für alle Characterset Systemvariablen utf-8, bzw. utf8_general_ci für die Collations. Die Tabelle, in die importiert werden soll, ist wie gesagt auch utf8 codiert.
Ich hab doch oben den Auszug aus dem Manual gepostet ! Wenn alles auf utf-8 steht, dann versucht er eben deinen input als UTF-8 zu behandeln, obwohl der eben keiner ist.
character_set_database sollte also eben NICHT auf utf-8 stehen sondern darauf, was dein INPUT ist, in dem Fall dann wohl latin1.

Zitat:
Schalte ich allerdings auf utf-8 um, sehe ich nur Quadrate anstelle der Umlaute. Wie kann ich denn die ANSI Datei so ändern, dass sie auch utf8 codiert funktioniert?
Du kannst die Datei entweder schon dort wo du sie exportieren lässt vielleicht in utf-8 exportieren lassen, wenn das unterstützt wird, oder aber z.b. mit iconv oder recode vor dem importieren umwandeln lassen.

Recode gibt es auch für Windows direkt für die shell falls du es ausserhalb von php machen willst: http://gnuwin32.sourceforge.net/packages/recode.htm
robo47 ist offline   Mit Zitat antworten
Alt 16.06.2008, 16:12  
Neuer Benutzer
 
Registriert seit: 22.02.2008
Beiträge: 6
knödelkopf
Standard

Wie oben gesagt:

Zitat:
Die Tabellen auf dem alten und neuen Server haben jeweils als Charset Latin1 eingestellt. Während nun bisher die Daten korrekt importiert wurden, wenn Umlaute in den Textfeldern enthalten waren, werden dafür jetzt in der Tabelle ? angezeigt. Ich habe natürlich schon versucht das Charset der Import Tabelle auf dem neuen Server auf utf8 umzustellen, hat aber nichts gebracht.
Ich habe also schon beides durch: Latin1 und zuletzt utf-8. Ist nur im Resultat kein Unterschied. Ich habe bei beiden Versuchen ALLE Systemvariablen, und die entsprechende temporäre Tabelle hinsichtlich des Charset umgestellt. (Klar, Server danach durchgestartet)

Auf die Codierung der Importdateien habe ich keinen Einfluss, die kommen quasi von "extern". Aber das mit dem recode werde ich mal ausprobieren.
knödelkopf ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Probleme beim Parsen einer XML-Datei unit1 PHP Tipps 2008 5 14.06.2008 01:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
load data infile umlaute, load data local infile umlaute, load data infile utf8, load data infile ansi, mysql load data umlaute, load data local infile utf8, load data infile, load data infile zeichensatz, mysql load data infile umlaute, load data infile windows, mysql load infile umlaute, load data umlaute, load data local umlaute, mysql load data infile utf8, gnuwin32 umlaute, load data infile csv umlaute, load data local infile utf-8, load data infile sonderzeichen, load infile umlaute, mysql load data infile sonderzeichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.