我使用oracle过程(utl_file.put_line)生成一个csv文件(example.csv),但是当我用记事本打开文件时,我意识到文件末尾有一个CR(回车符)。我只想删除那个CR。
该文件在服务器UNIX(AIX)上生成,我使用记事本在我的计算机(Windows)上打开它。
感谢您的帮助
答案 0 :(得分:3)
这似乎是错误的方式。 Unix中的换行符是换行符(LF),而Windows上是换行符换行符(CRLF)。
如果您在Unix中创建一个文件并在Windows中打开它,我会发现很少有问题,因为Windows通常会表示您认为LF是换行符。如果你反过来这样做,在Windows中生成文件并在Linux中打开,你应该期望在每一行的末尾都有一个流浪角色。
The documentation表示utl_file.put_line
“会附加特定于操作系统的行终止符。”这意味着您遇到的问题毫无意义。每行末尾应该有一个LF。此外,即使Oracle错误地执行此操作并附加Windows换行符,它也将是CRLF。
由于某种原因可能是记事本在最后添加CR,尽管这并没有多大意义。
如果你总是要在windows中查看文件,那么解决方法是使用utl_file.put
,它不包括最后的操作系统特定换行符,并在最后连接CRLF。 / p>
某些行,utl_file.put( filename, theline || chr(13) || chr(10) );
其中chr(n)
返回字符集中值为 n 的字符。 13是回车的Ascii和新线的10。
答案 1 :(得分:0)
解决此问题的最简单,最常用的方法是使用此工具unix2dos。在unix框上运行此命令,然后在窗口中打开new_example.csv文件
这是给你的命令:
unix2dos -n example.csv new_example.csv
答案 2 :(得分:0)
扩展Ben的答案:
您也可以使用utl_file.put_line( filename, theline || chr(13));
该行末尾的输出[CR] [LF]相同。