挑战:
CSV 数据文件通常包含空字段,这可以将它们加载到使用 NULLABLE 列定义的 MySQL 表时会出现问题。默认情况下,MySQL 会将零 (0) 分配给空字段,即使列默认值为 NULL 时也是如此。在尝试区分 NULL 值和零值时,这可能会导致混乱。
解决方案:
要确保在数据加载期间将空字段解释为 NULL 值,请考虑使用以下方法:
修改 LOAD DATA INFILE 语句,将空字段读入局部变量(@vfour),如果局部变量为空,则将实际字段值设置为 NULL。
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,'') ;
这确保 CSV 文件中的空字段在 MySQL 中被解释为 NULL
如果 CSV 文件中的所有字段都可能为空,请使用多个 SET 语句将 NULL 值分配给空字段。
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n" (@vone, @vtwo, @vthree, @vfour, @vfive) SET one = NULLIF(@vone,''), two = NULLIF(@vtwo,''), three = NULLIF(@vthree,''), four = NULLIF(@vfour,'') ;
此方法允许显式处理空字段并确保它们解释为 NULL 值。
通过使用这些方法,您可以有效地将 CSV 数据中的 NULL 值加载到 MySQL 表中,解决空字段被误解为零值的问题。
以上是如何正确地将 CSV 文件中的 NULL 值加载到 MySQL 表中?的详细内容。更多信息请关注PHP中文网其他相关文章!