在MySQL中,是否有一种变通方法允许丢失的数据等于加载数据填充的NULL?

在MySQL中,是否有一种变通方法允许丢失的数据等于加载数据填充的NULL?,mysql,load-data-infile,Mysql,Load Data Infile,我有很多大型csv文件,其中空值存储为,(即无条目)。使用LOAD DATA infle将这些空值变为零,即使我使用类似var DOUBLE DEFAULT NULL的字符串创建表也是如此。经过大量的搜索,我发现这是一个功能,尽管它可能是一些用户的一个功能。有没有一种方法可以不经过预处理就即时修复此问题?这些数据都是数字,因此零值与NULL非常不同 或者,如果我必须进行预处理,是否有一个最有希望处理数十个100mb到1gb的csv文件?谢谢 数据文件中的“\N”(不带引号)表示将文件导入MySQ

我有很多大型csv文件,其中空值存储为
(即无条目)。使用
LOAD DATA infle
将这些空值变为零,即使我使用类似
var DOUBLE DEFAULT NULL的字符串创建表也是如此。经过大量的搜索,我发现这是一个功能,尽管它可能是一些用户的一个功能。有没有一种方法可以不经过预处理就即时修复此问题?这些数据都是数字,因此零值与NULL非常不同


或者,如果我必须进行预处理,是否有一个最有希望处理数十个100mb到1gb的csv文件?谢谢

数据文件中的“\N”(不带引号)表示将文件导入MySQL时该值应为空。您是否可以编辑文件以将“,”替换为“,\N,”?

使用
sed进行最小的预处理,您就可以准备好导入数据了

for csvfile in *.csv
do
    sed -i -e 's/^,/\\N,/' -e 's/,$/,\\N/' -e 's/,,/,\\N,/g' -e 's/,,/,\\N,/g' $csvfile
done

应该对CSV文件进行一个就地编辑,用“代码> \\N/CODE”替换空白值。更新glob,*.csv,以满足您的需要


之所以有两个相同的正则表达式匹配
,是因为我无法找到另一种方法让它替换两个连续的空白值。例如,
,,

+1点。我可以,但是有这么多文件,那会很乏味。我希望不会在这里结束,因为我研究领域中的大多数数据提供程序都将NULL作为空字段提供,而不是\N。谢谢!我如何运行这个?我的终端fu非常弱(我在Win7上,但安装了cygwin)。打开cygwin外壳,转到数据所在的目录。然后,只要
*.csv
与您的数据集匹配,您就可以将解决方案复制/粘贴到shell中。Protip:首先备份数据!:)谢谢正在(复印件上)翻腾。。。我不知道我可以在终端上运行循环。+1快照!就这样。而且速度也不算太差。我很想看看是否有一个全在MySQL的解决方案,但你的是很难击败。谢谢