Autor Beitrag
LowFat
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 24.02.10 14:23 
Hi,

ich hoffe daß mir jemand weiterhelfen kann.

Ich importiere per Delphi (SQL-Insert der Zeos Lib (letzte Version)) in den MySQL-DB-Server eine CSV-Datei (bzw txt), die zuvor aus Excel 2003 (per CSV) exportiert wurde.
Klappt auch als prima soweit.

Problem: Bei einer distinct-Abfrage erscheint immer wieder ein Sonderzeichen (siehe Bild). Dies führt dazu das wie im Bsp. ZAM und ZAM+Sonderzeichen zwei verschiedene Werte sind. Ich möchte eigentlich nur ein ZAM.

Screenshot

Lösungsansätze bisher waren: Sonderzeichen entfernen, (hat anscheinend nicht geklappt)
Nur Zeichen zulassen die erlaubt sind (Bsp. ABCDEFG...usw in Excel vor dem "Export") hat nur zu einem Teilerfolg geführt bei einigen war es weg, bei anderen nicht...

Ich vermute mittlerweile es hat mit dem Zeichensatz zu tun, aber da habe ich überhaupt kein Plan. Welches, Wo und wie ... ?

Danke im Vorraus....

LowFat

Konfiguration:
Delphi 7
* Server: localhost via TCP/IP
* Server Version: 5.1.37
* Protokoll-Version: 10
* MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Webserver
* Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0
* MySQL-Client-Version: 5.1.37
* PHP Erweiterung: mysqli
(Standard XAAMP Installation)

CSV Datei wird mit ANSI gespeichert
Die Felder in der Datenbank (Kollation) sind latin1_general_ci eingestellt.

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.


In Delphi sieht die Import-Routine so aus (auszugweise :-) )

...

Zquery2.SQL.Text:=('LOAD DATA LOCAL INFILE ''C:\\FIN2.txt'' INTO TABLE mra_db FIELDS TERMINATED BY '';'' LINES TERMINATED BY ''\n'' (Datum, '+'Medium ,

...


Update : Das ist das geheimnisvolle Zeichen : 

Aber das hilft mir bisher nicht weiter :-(
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von LowFat am Do 25.02.10 11:06, insgesamt 1-mal bearbeitet
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Mi 24.02.10 19:32 
Ich meine in Erinnerung zu haben, dass "" kam, wenn man zwischen einer mit ANSI formatieren Datei und einer UTF-8 formatierten anderen Datei Inhalt austauscht. Zumindestens kam das bei mir immer, wenn ich php-Seiten noch als ANSI gespeichert hatte, dann nach UTF-8 umformatiert habe aber dann war, nach Aussage eines guten Freundes, ein Fehler im Datei-Header, sodass die Datei noch dieses Zeichen vor dem eigentlichen Text hatte. Als ich alles auf UTF-8 (ohne BOM, so hieß das) umgestellt hatte, war auch das Zeichen weg. Von daher genke ich mal, dass auch dieses mal der Fehler dort liegt (jetzt mal als kleinen Anhaltspunkt), zumal die Datei als ANSI und die DB als UTF-8 ist.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
LowFat Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 24.02.10 20:30 
Hi,

die Sache mit UTF-8 und ANSI ist schon mal ein Fingerzeig - Danke - Mein Problem ist, daß ich dieses Zeichen
Zero Width No-Break Space ( de.wikipedia.org/wiki/Leerzeichen ) - wie ich mittlerweile herausgefunden habe - nicht am Anfang der CSV-Datei sondern einfach mittendrin und nur bei einigen Begriff und nicht bei allen habe. Ich aber in Excel dieses Zeichen nie eingegeben habe - in Excel habe ich sämtliche Begriffe ersetzt und neue eingegeben ("ohne Leerzeichen am Ende") trotzdem taucht dieses Phänomen wieder auf.
Wenn die CSV-Datei in UTF-8 Format speichere und importiere sind die Datenfelder in Mysql per PHP-Admin nicht mehr lesbar - irgendwie kein wirklich Lösung.

Ich werde da aber dran bleiben, hoffe aber noch auf eine ander Lösung/Lösungshinweis ....

Danke noch mal an Webo.


Update 2: Excel 2003 exportiert anscheinend alle (txt/csv) Dateien nach UTF-16 LE. - Ich werde es nachher zu Hause testen und dann berichten.
( www.developmentnow.c...code-to-ISO-8859.htm )
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Do 25.02.10 15:41 
Du könnste noch die Datenbank auf Kollation utf8_general_ci umstellen, vielleicht lässt es sich dann importieren.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
LowFat Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 25.02.10 20:23 
Hi,

nur eine kurze Info: Habe die Excel-Tabelle 2003 durch OpenOffice Calc (Aktuelle Version) geschoben und auf UTF8 CSV (unter Filterformateinstellung) gespeichert. Dann die Datei importiert... und siehe da nur noch 2 Einträge die mit dem Zeichen versehen sind. der Rest funzt soweit. Also mal wieder ein Hoch auf OpenSource-Software .(Die halten sich wenigstens am Standard :-) ) Zumindestens kann man bestimmen wie man seine Datei exportiert haben möchte.

Update: Db funktioniert, habe die restlichen Einträge per Hand gefixt. Danke nochmal an Webo. Hab mal wieder was dazu gelernt :-)