Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理UTF8 sqlldr ORACLE中需要2个字节的特殊字符_Oracle_Oracle10g_Sql Loader - Fatal编程技术网

如何处理UTF8 sqlldr ORACLE中需要2个字节的特殊字符

如何处理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 (

如何在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
( 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我希望你能理解这个问题