0

我正在尝试读取由外部系统发送到我们服务器的文件并将其加载到 oracle 数据库表中。我正在使用 utl_file 包从文件中读取数据。当我在 unix 环境中创建具有相似内容的文件时,它会被我的 oracle 代码读取,但同样不适用于我们从外部系统接收的文件。在研究中,我发现外部系统发送的文件是 ISO-8859 文本类型,带有 CRLF 行终止符,而我在 unix 环境中创建的文件是 UTF-8 Unicode 文本类型。

下面是输出

select * from sys.v_$parameter
where name like 'nls_lang%'

在此处输入图像描述

4

1 回答 1

0

因为类 Unix 仅使用 1(一个)字符作为 END-OF-LINE(LINE-FEED 和 ascii 代码 10),文件有 2(两个)字符作为 END-OF-LINE(CARRIAGE_RETURN 和 ascii 代码 13 和下一个) LINE-FEED 与 ascii 代码 10),UTL_FILE.GET_LINE 读取的每一行都有一个 CARRIAGE-RETURN 字符作为最后一个字符(ascii 13)。
您需要 RTRIM 最后一个字符。
例如,在“sbLine”变量上读取每一行,然后使用它来删除最后一个

rtrim(sbLine,chr(13))
于 2018-12-11T14:55:47.580 回答