无法在Oracle

时间:2018-12-11 05:33:52

标签: unix plsql oracle11g plsqldeveloper plsql-package

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

下面是

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

rtrim(sbLine,chr(13))