如何处理UTF8 sqlldr ORACLE中需要2个字节的特殊字符
如何在sql loader Oracle中处理UTF8中需要2个字节的特殊字符 字符被正确显示和存储,“á”表示无效。但是,包含这种类型字符的行将滑动到数据库中表的下一列。主要的问题是y丢失了位置,因为特殊字符需要2个字节 如何保持值列的长度 file.txt如何处理UTF8 sqlldr ORACLE中需要2个字节的特殊字符,oracle,oracle10g,sql-loader,Oracle,Oracle10g,Sql Loader,如何在sql loader Oracle中处理UTF8中需要2个字节的特殊字符 字符被正确显示和存储,“á”表示无效。但是,包含这种类型字符的行将滑动到数据库中表的下一列。主要的问题是y丢失了位置,因为特殊字符需要2个字节 如何保持值列的长度 file.txt 4351 LUISA F32345 2312 JOSÉ M67868 file.ctl LOAD DATA CHARACTERSET UTF8 INFILE file.txt APPEND INTO TABLE USERAPP (
4351 LUISA F32345
2312 JOSÉ M67868
file.ctl
LOAD DATA
CHARACTERSET UTF8
INFILE file.txt
APPEND INTO TABLE USERAPP
( ID POSITION(1:5) CHAR,
NAME POSITION(6:12) CHAR,
GEN POSITION(13:13) CHAR,
CODE POSITION(14:20) CHAR)
然后在桌子上
ID NAME GEN CODE
4351 LUISA F 32345
2312 JOSÉ M67868
这是您的问题,您不能按字符使用位置: POSITION参数的开始和结束参数以字节为单位进行解释,即使数据文件中使用了字符长度语义 试着这样做:
LOAD DATA
CHARACTERSET AL32UTF8 LENGTH CHAR
INFILE file.txt
APPEND INTO TABLE USERAPP
(
ID CHAR(5),
NAME CHAR(7),
GEN CHAR(1)
CODE CHAR(7)
)
我不明白这个问题。“失去位置”是什么意思?Oracle中的
length
函数返回字符串的长度(以字符为单位,而不是以字节为单位),因此每个字符的长度都为1,而不考虑存储它所需的字节数。什么是数据库字符集?你想在一个数据库中存储一个字符,而这个数据库的字符集不支持它吗?我也不明白。length
与sql加载程序和字符集有什么关系?你能提供一个清楚的例子说明你有什么问题吗?对不起,这个问题很难理解。大家好,我的问题就像一排何塞。。。这个字符“É”改变了sql loder进程,然后占用了更多的一个字节,并且丢失了我所做的设置。@我希望您能够理解problem@RobertoHernandez我希望你能理解这个问题