【问题标题】:PL/SQL UTF_FILE.PUT_LINE does not add a new linePL/SQL UTL_FILE.PUT_LINE 不添加新行
【发布时间】:2013-12-30 13:45:26
【问题描述】:

我创建了一个将文本写入文件的过程,但由于某种原因,我无法通过代码创建新行,最终结果是该过程将所有内容写入同一行,直到它中断由于尺寸而新的生产线。 这就是代码的样子:

logFileHand := UTL_FILE.FOPEN('LOGS' , logName, 'A');
UTL_FILE.PUT_LINE(logFileHand, LOG_TS || '   ' || LOG_INSTANCE || '   ' || LOG_USER ||    
'   ' || LOG_PROGRAM || '   ' || LOG_LEVEL || '   ' || LOG_TEXT);
UTL_FILE.PUT_LINE(logFileHand, 'test');
UTL_FILE.FCLOSE(logFileHand);

此过程运行 1 次后文件如下所示:

30-DEC-13 03.43.03.341466 PM 1 LPSQL TABLET_PARTY.GETSP TABLET_PARTY.GET ERR SQL 错误:100 找不到 ID 的派对详细信息:200144095test

正如您所见,一切都在同一条线上,我已经尝试了 PUT 函数的所有变体,但没有任何帮助。 有任何想法吗?提前非常感谢!

【问题讨论】:

  • PUT_LINE terminates the line with the platform-specific line terminator character or characters. 您使用哪个文本编辑器打开文件?您的服务器和客户端操作系统是什么?类 unix 系统和 Windows 处理行终止符的方式有所不同。
  • 在 Windows 7 上尝试了普通记事本和 Notepad++
  • @user30500187 你的服务器操作系统是什么?您如何从写入文件的目录中获取文件(您是否以某种方式从服务器复制它)?或者您的本地机器上有服务器(即 XE 版本)?
  • Redhat Linux,它将文件写入一个共享库,我可以作为网络位置访问该库。

标签: oracle plsql utl-file


【解决方案1】:

您的行似乎没有被拆分,因为类 unix 的操作系统和窗口对被视为行分隔符的内容有不同的约定。有关更多详细信息,请查看answer to this question。您有两个选项可以正确分隔行。

  1. 正确设置您的文本编辑器。 IE。在 Notepad++ 中,您应该选择编辑 -> EOL 转换 -> 转换为 Windows 格式。然后保存您的文件并重新打开它。
  2. 使您的程序使用 Windows 行分隔符写入日志文件。这种方法是有问题的。如果这些文件应该以任何方式在具有 linux 操作系统的服务器上使用,那么它应该具有原生格式。

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多