首页 >数据库 >mysql教程 >如何使用 LOAD DATA INFILE 将 NULL 值(而不是零)从 CSV 加载到 MySQL 中?

如何使用 LOAD DATA INFILE 将 NULL 值(而不是零)从 CSV 加载到 MySQL 中?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-22 07:28:09730浏览

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

MySQL:从 CSV 数据加载 NULL 值

问题:

从包含空字段的 CSV 文件加载数据时使用 LOAD DATA INFILE 命令写入 MySQL 表时,MySQL 会将 0 分配给空字段而不是 NULL,即使列定义了 NULL 默认值。

解决方案:

要正确加载空字段的 NULL 值,请将有问题的字段读入局部变量,然后有条件地设置如果变量是,则实际字段值为 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,'')
;

解释:

  • LOAD DATA INFILE 语句将 CSV 文件中的数据读取到 moo 表中。
  • FIELDS 子句定义 CSV 文件中的字段及其对应的列名称
  • 第四个字段 (@vfour) 被读入局部变量,而不是直接读入第四列。
  • SET 语句检查 @vfour 变量是否为空 ('')使用NULLIF函数。
  • 如果@vfour为空,则第四列设置为NULL;

附加说明:

如果所有字段都可能为空,请将它们全部读入局部变量并使用多个SET 语句有条件地分配 NULL 值。

以上是如何使用 LOAD DATA INFILE 将 NULL 值(而不是零)从 CSV 加载到 MySQL 中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn