PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem: 0 (Zero) oder NULL oder eben "nichts"


zubi
14.10.2003, 19:29:09
Hallo Zusammen,

Problem:
Beim importieren von mehreren hundert Datensätzen aus einer csv.-Datei (generiert aus Excel und FileMaker) via MySQLMyAdmin ergeben sich folgende Probleme:

1. Integer oder Float -Felder, wo nichts drin stehen soll, werden in MySQL immer mit "0" gefüllt, obwohl ich die Funktion NULL aktiviert habe und das Feld als Vorgabe auch NULL drin hat.

2. Habe auch versucht, alle leeren Felder vor der csv.-Generierung mit "Null" zu füllen, um sie dann so zu importieren; funktioniert auch nicht; wieder ist "0" in den Feldern der MySQL Datenbank.

Frage:
Was mache ich falsch? Ist es möglich "nichts" ("") in ein Int oder float -Feld via MySQLMyAdmin zu importieren? Was muss ich in der Datenbank einstellen? Wie muss die csv. Datei beschaffen sein? Muss ich ein eigenes Programm für den Import schrieben?

Wer hat Erfahrung damit?

Vielen Dank für eine Antwort.

chris17
15.10.2003, 13:52:55
Hallo zubi,

es solte funktionieren, wenn in der CSV-Datei NULL ohne Anführungszeichen drinsteht.
Bsp.:
"1";NULL
"2";NULL

Vielleicht hilft's

Gruss

Christian

zubi
15.10.2003, 15:27:20
Danke Christian für die gute Idee.

Dieser Gedanken habe ich auch gehabt. In Anlehnung an die Eingabe über eine php-Datei, wo ja bei der Funktion UPDATE ... SET, bei SET für eine "NULL"-Eingabe die ' (Apostroph) bei den Feldern fehlen müssen, damit in der Datenbank "NULL" eingetragen wird. Dies nur bei Int oder Float-Definitionen; im Gegensatz zu Varchar.


Habe die Daten so präpariert; über die csv.Datei und PHPMyAdmin hat es aber leider nicht funktioniert.

Freue mich auf weitere gute Vorschläge. Merci.

chris17
15.10.2003, 15:48:54
Hm, hab's jetzt mal selbst getestet, und es hat funktioniert.

Excel2000(NULL in die Zellen geschrieben) -> als CSV gespeichert -> phpMyAdmin(2.4.0-rc2) -> Textdatei in Tabelle einfügen

Es steht NULL in der DB!

zubi
15.10.2003, 17:55:58
Christian, Du bist grossartig. Danke.

Habs auch noch ausprobiert, und es geht effektiv! Habe bei diesen Versuchen gemerkt, dass die unterschiedlichen Programme die csv.Datei unterschiedlich generieren:
FMP macht "text","text","zahl",...
Excel aber text;text;zahl;...

Wenn man es dann "ganz normal" mit phpMyAdmin importiert und trotzdem "Felder eingeschlossen von "" in den Einstellungen behällt, dann klappts.


Habe auch gemerkt, dass mit der empty-Abfrage ein Feld ($corr) nicht nach "0" oder ""(NULL) abgefragt werden kann. Habe folgendes probiert:

if (is_null ($corr)) { $corr="NULL"; }
if ($corr==="") { $corr="NULL"; }

Es funktioniert, und setzt die Variable beim Speichern, wenn Inhalt="" (nichts) auf NULL, und wenn Inhalt="0" auf 0 (Zero).
Da Du ws gleiche Probleme schon gehabt hast, erlaube ich mir, Dich zu fragen: Kennst Du einen einfacheren Weg?

Vielen Dank.

Gruss Zubi

chris17
16.10.2003, 14:22:53
Hi zubi,
Es funktioniert, und setzt die Variable beim Speichern, wenn Inhalt="" (nichts) auf NULL, und wenn Inhalt="0" auf 0 (Zero).
Da Du ws gleiche Probleme schon gehabt hast, erlaube ich mir, Dich zu fragen: Kennst Du einen einfacheren Weg?

Nö, hab' das Problem noch nicht gehabt.
Aber wenn's funktioniert ist prima :-)))

Schau mal dort -> http://de3.php.net/manual/de/language.types.null.php#language.types.null.syntax
$var = NULL;// Ohne Anführungszeichen

Grüsse

Christian