Heim >Datenbank >MySQL-Tutorial >Wie lade ich NULL-Werte, keine Nullen, mit LOAD DATA INFILE aus einer CSV in MySQL?

Wie lade ich NULL-Werte, keine Nullen, mit LOAD DATA INFILE aus einer CSV in MySQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 07:28:09804Durchsuche

How to Load NULL Values, Not Zeros, from a CSV into MySQL using LOAD DATA INFILE?

MySQL: NULL-Werte aus CSV-Daten laden

Problem:

Beim Laden von Daten aus einer CSV-Datei mit leeren Feldern Wenn Sie mit dem Befehl LOAD DATA INFILE eine MySQL-Tabelle hinzufügen, weist MySQL leeren Feldern 0 anstelle von NULL zu, selbst wenn die Spalte mit NULL definiert ist Standardwert.

Lösung:

Um NULL-Werte für leere Felder korrekt zu laden, lesen Sie das problematische Feld in eine lokale Variable ein und setzen Sie dann den tatsächlichen Feldwert bedingt auf NULL wenn die Variable ist leer:

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(one, two, three, @vfour, five)
SET four = NULLIF(@vfour,'')
;

Erklärung:

  • Die LOAD DATA INFILE-Anweisung liest die Daten aus der CSV-Datei in die Moo-Tabelle.
  • Die FIELDS-Klausel definiert die Felder in der CSV-Datei und ihre entsprechenden Spaltennamen in der Tabelle.
  • Die Das vierte Feld (@vfour) wird in eine lokale Variable statt direkt in die vier Spalte eingelesen.
  • Die SET-Anweisung prüft mithilfe der NULLIF-Funktion, ob die @vfour-Variable leer ist ('').
  • Wenn @vfour leer ist, wird die Spalte vier auf NULL gesetzt; andernfalls behält es seinen ursprünglichen Wert.

Zusätzlicher Hinweis:

Wenn möglicherweise alle Felder leer sein können, lesen Sie sie alle in lokale Variablen ein und verwenden Sie mehrere SET-Anweisungen zur bedingten Zuweisung von NULL-Werten.

Das obige ist der detaillierte Inhalt vonWie lade ich NULL-Werte, keine Nullen, mit LOAD DATA INFILE aus einer CSV in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn