1

我使用oracle程序(utl_file.put_line)生成了一个csv文件(example.csv),但是当我用记事本打开文件时,我意识到文件末尾有一个CR(回车)。我只想删除那个 CR。

该文件是在服务器 UNIX (AIX) 上生成的,我使用记事本在我的计算机 (Windows) 上打开它。

谢谢你的帮助

4

3 回答 3

3

这似乎是错误的方式。Unix 中的换行符是换行符 (LF),而 Windows 中的换行符是回车换行符 (CRLF)。

如果您在 Unix 中创建一个文件并在 Windows 中打开它,我预计很少会出现问题,因为 Windows 通常可以解决您的意思是 LF 换行符。如果您以相反的方式执行此操作,在 Windows 中生成文件并在 Linux 中打开,您可能应该期望每行末尾都有一个杂散字符。

该文档utl_file.put_line “附加了一个特定于操作系统的行终止符”。这意味着您遇到的问题毫无意义。每行的末尾应该有一个 LF。此外,即使 Oracle 错误地执行此操作并附加 Windows 换行符,它也会是 CRLF。

可能是记事本出于某种原因在末尾附加了一个 CR,尽管这并没有多大意义。

解决方法是,如果您总是要在 windows 中查看文件,请使用utl_file.put,它不包括最后的操作系统特定换行符并在最后连接 CRLF。

某行,utl_file.put( filename, theline || chr(13) || chr(10) );其中chr(n)返回字符集中具有n值的字符。13 是用于回车的 Ascii,而 10 是用于换行的。

于 2012-05-23T18:19:11.290 回答
0

解决这个问题的最简单和最常见的方法是使用这个工具 unix2dos。在您的 unix 机器上运行此命令,然后在您的窗口中打开 new_example.csv 文件

这是给你的命令:

unix2dos -n example.csv new_example.csv
于 2012-11-01T14:55:09.907 回答
0

扩展本的答案:

你也可以使用utl_file.put_line( filename, theline || chr(13));

输出与行尾的 [CR][LF] 相同。

于 2015-05-13T13:11:50.657 回答