免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4220 | 回复: 10
打印 上一主题 下一主题

数据库导数库的时候,替换空值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-22 16:01 |只看该作者 |倒序浏览
有一个比较大的数据库表,有上千万条记录吧,因为一开始建表的时候有些字段充许有空值,但后来表结构有改过,不充许为空,现在把数据导出来之后,就不好导进去了,需要把那些空值都改为为空,怎么把这些空值||或者| |或者|   |改成我想要的值呢,我试过用vi的替换功能,没办法一次替换成功,而且替换一次要1个多小时,累死了。

部分记录如下 
1|www.bgj.com|河北泊头公司|17|0317-8160| |河北省泊头| |130000|130900|130981|8|279|283|0|0|| |-||王
仓|06/09/2003|李斌|08/05/2008||-,-,-,-,-,-,-,-|
2|www.cnic.net.cn|中国信息中心|5|010-5881300| |北京中关| |110000|110100|999999|2|150|151|0|0| | |0000-0000000| |陈志强|06/09/2003|zzycp001|06/24/2007| | |
5126637|www.cji.com.cn|重庆城|12|023-63587||重庆||500000|500100|500101|1|14|15|0|11060|qi56@163.com|856933|023-63855
87|636|江滨|07/03/2007| |07/03/2007|||

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2008-08-22 16:04 |只看该作者
sed ':a;s/| *|/|NULL|/g;ta'

论坛徽章:
0
3 [报告]
发表于 2008-08-22 16:12 |只看该作者
空格不算空啊。

论坛徽章:
0
4 [报告]
发表于 2008-08-22 16:30 |只看该作者
对啊,我搞错了,对不起
空格不算空哦,
那怎么才能把空值替换为空格呢?
就是说所有的||替换为| |

论坛徽章:
0
5 [报告]
发表于 2008-08-22 16:38 |只看该作者
awk -F\| '{for(i=0; i<=NF;i++) if($i=="")$i=" ";print $0}' filename

编辑一下,少写了个=

[ 本帖最后由 welcome008 于 2008-8-22 17:09 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
6 [报告]
发表于 2008-08-22 16:38 |只看该作者
sed ':a;s/||/| |/g;ta'

论坛徽章:
0
7 [报告]
发表于 2008-08-22 16:39 |只看该作者
楼上的楼上的试了一下,好像不行
结果为全空

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
8 [报告]
发表于 2008-08-22 16:40 |只看该作者
原帖由 welcome008 于 2008-8-22 16:38 发表
awk -F\| '{for(i=0; i


OFS 未设置,$i="" 应该为$i==""

论坛徽章:
0
9 [报告]
发表于 2008-08-22 17:28 |只看该作者
原帖由 ly5066113 于 2008-8-22 16:38 发表
sed ':a;s/||/| |/g;ta'

sed ':a;s/||/| |/;ta'
连续出现||

理解有误,两个都对,sed ':a;s/||/| |/g;ta' 效率更高

[ 本帖最后由 爱知 于 2008-8-22 17:32 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-08-22 22:01 |只看该作者
几个表,几个字段啊,不应该这样一刀切.
你确定导不进是因为空值问题吗?字符集、半个没字、控制字符、乱码等,都可能造成你导不进。
如个表及字段不多,最好是公布结构,量身定做,转换同时判断字段数是否正常。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP