ITPub博客

首页 > 大数据 > 数据挖掘 > 数据里面有回车符的解决方法

数据里面有回车符的解决方法

原创 数据挖掘 作者:bluesea0012002 时间:2016-03-01 10:26:09 0 删除 编辑
进行ETL时,从文本文件抽取数据到DB中,报列分隔符的错误:
Expected 'column' delimited column type on input, but encountered a row delimiter instead. Probable cause is a mismatch between the specified column delimiter and the column delimiter used in the input file. 

这是因为数据里面有回车符ch(10)和ch(13),而文本文件的列分隔符默认为|| 。 所以ODI读取时(个人认为其他ETL程序也会出现,但是没有去测试),会将原来的一个列分成两个列去读取,从而出现上述的错误。

解决方法:
从源头处理数据,要求数据录入人员避免此种操作。但是一般这种方法的推进会非常的慢,所以考虑在ETL端先对这种特殊字符做处理。Oracle数据库可以用replace函数。
如: REPLACE(REPLACE(列名, chr(10), ''), chr(13), '')
意思为将回车符转换为空格。

3. 回车符的补充知识

关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。

在计算机还没有出现之前,有一种叫做电传打字机的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/675255/viewspace-2018545/,如需转载,请注明出处,否则将追究法律责任。

下一篇: ODI导出文件乱码
请登录后发表评论 登录
全部评论
  • 博文量
    7
  • 访问量
    12061