Как загрузить a ® (обведенный «R») из внешней таблицы в Oracle table?

#oracle #oracle10g #globalization

#Oracle #oracle10g #глобализация

Вопрос:

Я использую oracle 10g.Набор символов для DB выглядит следующим образом: NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET AL32UTF8.

У меня есть символ ® (обведенный «R»), входящий в текстовый файл в одном из полей, и когда тот же файл загружается во внешнюю таблицу, символ преобразуется в ‘?’.

Пожалуйста, предложите.

Комментарии:

1. Можете ли вы предоставить определение внешней таблицы?

2. Тип данных для этого столбца — 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

3. Пользователь NVARCHAR вместо VARCHAR2 и использует CHAR вместо byte, например: VARCHAR2(1 BYTE) становится NVARCHAR2(1 CHAR)

4. Я пытался использовать следующее определение, но все еще существует та же проблема:- 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

Ответ №1:

Где вы видите, что ® преобразуется в вопросительный знак? Возможно, проблема в кодировке того, что вы используете для просмотра таблицы, а не в самой таблице. Я бы также проверил, что вы используете для загрузки базы данных. UTF8 должен поддерживать символ.

Комментарии:

1. Я вижу ? в Toad. Это не проблема с кодировкой, поскольку я уже установил кодировку toad в UTF-8, и .txt также кодируется в utf-8. Я использую внешнюю таблицу для чтения файла .txt с символом ®. Теперь, когда я вижу это через внешнюю таблицу, я получаю ? в таблице.