2011-01-03 12 views
0

Ich verwende den Befehl LOAD DATA INTO, um Daten aus einer TXT-Datei in meine Datenbank einzulesen. In meiner Eingabe muss ich '-' Zeichen als null (nicht die Zeichenkette null) nehmen. Zum Beispiel:mysql null Problem?

der Eingang

Stack - Überlauf

haben

1. Spalte sein = stapeln 2. Spalte = null 3. Spalte = Überlauf.

Wie kann ich das tun ??

+0

Was haben Sie so weit gekommen? Können Sie die Daten überhaupt in Ihre Datenbank bekommen, ohne sich um NULLs Gedanken machen zu müssen? –

Antwort

2

würde Ein einfacher Ansatz ersten LOAD DATA ohne Umwandlungen zu benutzen, dann danach einige Updates ausführen, um die Werte zu korrigieren, die Sie Ändern möchten:

UPDATE yourtable 
SET col1 = NULL 
WHERE col1 = '-' 

Die Syntax Sie auch LOAD DATA ermöglicht Transformationen geben Sie Ihre Daten:

[SET col_name = expr, ...]

Die Spaltenliste entweder Spaltennamen oder Benutzervariablen enthalten. Bei Benutzervariablen ermöglicht die SET-Klausel das Ausführen von Transformationen für ihre Werte, bevor das Ergebnis den Spalten zugewiesen wird.

wäre ein Beispiel:

LOAD DATA INFILE 'file.txt' 
INTO TABLE t1 
(column1, @var1) 
SET column2 = CASE WHEN @var1 = '-' THEN NULL ELSE @var1 END; 
+0

Kann ich es beim Erstellen der Datenbank tun? – obtur

+0

Versuchte das mit einer if-Anweisung, aber ich konnte es nicht tun. Ich habe WENN-Name geschrieben! = '-' DANN SET-Name = @ Name END IF, aber sagt, es ist ein Syntaxfehler. – obtur