加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – SQL * Loader无法识别分隔符“¥”

发布时间:2020-12-12 13:14:52 所属栏目:百科 来源:网络整理
导读:尝试使用¥分隔符加载UTF-8文件时,它在找到字符时不会分隔字段.我们从超过列大小的值中得到ORA-12899错误,因为它试图将整行放入第一列. 在UTF-8中,¥是¥(C2A5),但似乎它试图找到C2C2A5. 数据库设置是 NLS_LANGUAGE SPANISHNLS_TERRITORY SPAINNLS_CURRENCY
尝试使用¥分隔符加载UTF-8文件时,它在找到字符时不会分隔字段.我们从超过列大小的值中得到ORA-12899错误,因为它试图将整行放入第一列.

在UTF-8中,¥是¥(C2A5),但似乎它试图找到C2C2A5.

数据库设置是

NLS_LANGUAGE    SPANISH
NLS_TERRITORY   SPAIN
NLS_CURRENCY    ?
NLS_ISO_CURRENCY    SPAIN
NLS_NUMERIC_CHARACTERS,.
NLS_CHARACTERSET    WE8ISO8859P15
NLS_CALENDAR    GREGORIAN
NLS_DATE_FORMAT DD/MM/RR
NLS_DATE_LANGUAGE   SPANISH
NLS_SORT    SPANISH
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT    DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT  HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY   ?
NLS_COMP    BINARY
NLS_LENGTH_SEMANTICS    BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET  AL16UTF16
NLS_RDBMS_VERSION   11.2.0.3.0

我们尝试过:

NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252

我们从具有西班牙语语言环境的Windows 7计算机上的命令窗口运行SQL * Loader.

控制文件:

LOAD DATA
CHARACTERSET UTF8
INFILE  'C:tmpxxxy.txt'
BADFILE 'C:tmpxxxy.bad'
TRUNCATE INTO TABLE  SAMPLE.TEST_CAR_VENCIMI_INTERMED
fields terminated by "¥"
TRAILING NULLCOLS
(
CODE             CHAR "upper(ltrim(rtrim(:CODE)))",CIF              CHAR "upper(ltrim(rtrim(:CIF)))",CODIGO_PRESTAMO  CHAR "upper(ltrim(rtrim(:CODIGO_PRESTAMO)))"
)

示例数据文件:

21AK0100¥P22222111F¥910002¥000000000106013.64¥666666666¥mail@domain.com¥address¥22222¥Name¥Surname 1¥Surname 2¥mail2@domain.com¥666666666

解决方法

由于您使用的是UTF8字符和UTF8文件格式(我认为),对于运行SQL * Loader的会话,请将NLS_LANG环境变量设置为“SPANISH_SPAIN.UTF8”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读