【发布时间】:2011-11-07 18:07:05
【问题描述】:
我使用的是oracle 10g。DB的字符集如下:NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET AL32UTF8。
我在其中一个字段的 .txt 文件中有 ®(带圆圈的“R”)符号,当在外部表中加载相同的文件时,该符号将转换为“?”。
请提出建议。
【问题讨论】:
-
能否提供External Table的定义?
-
此列的数据类型为 nvarchar2(500 字节)。
CREATE TABLE "APP_XXX_XX_XXXX"( "product_name" NVARCHAR2(500 byte) "XXX_XXX_XXXXX" VARCHAR2(1 byte), "XXX_XXX_XXXXX" NUMBER(9), "XXX_XXX_XXXXX" NUMBER(4), "XXX_XXX_XXXXX" NUMBER(2), "XXX_XXX_XXXXX" NUMBER(3)) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY "DIR" ACCESS PARAMETERS ( RECORDS DELIMITED BY '~^' CHARACTERSET 'AL32UTF8' LOGFILE APP_XXX_XX_XXXX_%A_%P.LOG' BADFILE 'APP_XXX_XX_XXXX_%A_%P.BAD' DISCARDFILE 'APP_XXX_XX_XXXX_%A_%P.DSC' LOCATION ( 'FILE1.TXT') ) REJECT LIMIT UNLIMITED -
使用 NVARCHAR 代替 VARCHAR2 并使用 CHAR 代替字节 例如:
VARCHAR2(1 BYTE)变为NVARCHAR2(1 CHAR) -
我尝试使用以下定义,但仍然存在同样的问题:-
CREATE TABLE @@@@ ( PRD_TITLE NVARCHAR2(400) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY PROD_EXT_TAB ACCESS PARAMETERS ( RECORDS DELIMITED BY '~^' CHARACTERSET AL32UTF8 LOGFILE ext_log:'@@@@.log' BADFILE ext_log:'@@@@.bad' DISCARDFILE ext_log:'@@@@.dsc' FIELDS TERMINATED BY '_^' OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL REJECT ROWS WITH ALL NULL FIELDS ( prd_title ) ) LOCATION (PROD_EXT_TAB:'@@@@.txt') ) REJECT LIMIT UNLIMITED NOPARALLEL
标签: oracle oracle10g globalization