首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql加载数据跳过太多记录。

Mysql加载数据跳过太多记录。
EN

Server Fault用户
提问于 2013-03-27 11:39:57
回答 1查看 1.7K关注 0票数 -1

我以这种方式从mysql表导出了这个csv

代码语言:javascript
复制
select *  INTO OUTFILE '/tmp/myfile.csv'   FIELDS TERMINATED BY ',' FROM bouncemap

我需要使用sed来替换这个csv中的启动*值的ip地址,并用star * char替换一些其他的弹出代码。

问题是,在这个csv文件上使用sed之后,我尝试以这种方式将它导入mysql的表中。

代码语言:javascript
复制
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

有什么想法或建议吗?干杯

EN

回答 1

Server Fault用户

发布于 2013-03-27 17:00:10

好的,伙计们,问题是有些记录太长了,mysql在导出过程中给记录添加了一些额外的\n字符。

这意味着我有一张空头支票。

所以我的同事建议用这个小把戏

代码语言:javascript
复制
select bouncetype, replace (bouncereason,'\n','')  INTO OUTFILE '/tmp/.csv' FIELDS TERMINATED BY ',' from bouncemap;

在这种情况下,替换\n换行符,如果行太长,也不使用任何换行符。

因此,我设法使用sed操作提取的文件,然后导入它,mysql没有抱怨:D

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/491779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档