我以这种方式从mysql表导出了这个csv
select * INTO OUTFILE '/tmp/myfile.csv' FIELDS TERMINATED BY ',' FROM bouncemap我需要使用sed来替换这个csv中的启动*值的ip地址,并用star * char替换一些其他的弹出代码。
问题是,在这个csv文件上使用sed之后,我尝试以这种方式将它导入mysql的表中。
LOAD DATA LOCAL INFILE '/tmp/myfile.csv' INTO TABLE table FIELDS TERMINATED BY ',' 进口过程跳过了记录的70%以上。
我注意到,如果我将表导出为csv,然后在mysql表中重新导入,而不使用sed,则一切都很好,所有记录都会被导入。
我还注意到,如果我用散列# char替换ip地址,而不是使用star,则未导入记录的数量将增加80%。
我在debian 6.0.5上使用MySQL5.1
有什么想法或建议吗?干杯
发布于 2013-03-27 17:00:10
好的,伙计们,问题是有些记录太长了,mysql在导出过程中给记录添加了一些额外的\n字符。
这意味着我有一张空头支票。
所以我的同事建议用这个小把戏
select bouncetype, replace (bouncereason,'\n','') INTO OUTFILE '/tmp/.csv' FIELDS TERMINATED BY ',' from bouncemap;在这种情况下,替换\n换行符,如果行太长,也不使用任何换行符。
因此,我设法使用sed操作提取的文件,然后导入它,mysql没有抱怨:D
https://serverfault.com/questions/491779
复制相似问题