phpbar.de logo

Mailinglisten-Archive

[php] dezimal ##,## update in mysql

[php] dezimal ##,## update in mysql

Ulf Wendel ulf_(at)_redsys.de
Thu, 02 Mar 2000 20:32:10 +0000


"jm.Fuchs" wrote:
> 
> Ich möcht eine von Excel exportierte CSV-Datei mit dem Befel "LOAD DATA
> INFILE" in eine Datenbank laden. Dies funktioniert auch prima, ausser das
> decimal Zahlen (z.B. ##,##) unter Excel mit einem komma getrennt werden,
> dies aber während des Updates nicht berücksichtigt wird. Es wird also nur
> die Zahlen vor komma übertragen.
> Was ist zu machen ?

Ich gehe immer wieder zwei Wege. Entweder ich bringe dem Kunden bei, daß
Zahlen einen Punkt statt eines Kommazeichens besitzen und schwärme ihnen
etwas von besonders günstiger Programmierung vor oder ich parse die
Datei vor dem LOAD DATA INFILE. 

Das parsen bietet sich immer dann an, wenn es mit einem einfachen
LOAD... nicht getan ist. Dies ist z.B. bei komplexeren Shops der Fall wo
"flache" CSV Dateien mehrere Tabellen speisen. Hilfreich sind die
Funktionen:

str_replace(), http://www.php.net/manual/function.str-replace.php3
fgetcsv, http://www.php.net/manual/function.fgetcsv.php3

Als letzte Variante, in der ich keine wesentliche Erleichterung sehe,
ist die Modifizierung des Datentyp in der Datenbank. Man benutzt statt
float(8,2) ein varchar(10) und läßt PHP beim Auslesen den Wert
konvertieren. Dies ist natürlich nicht ganz sehr effektiv, da unnötig
viele Konvertierungen erfolgen, aber wer will...

Ulf


php::bar PHP Wiki   -   Listenarchive