【问题标题】:How to load a ® (the circled "R") from an external table in oracle table?如何从 oracle 表中的外部表加载®(带圆圈的“R”)?
【发布时间】: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


【解决方案1】:

您在哪里看到 ® 被转换为问号?这可能是您用来查看表格而不是表格本身的编码的问题。我还会检查您用于加载数据库的内容。 UTF8 应该支持这个字符。

【讨论】:

  • 我看到的是 ?在 Toad 中。这不是编码的问题,因为我已经将 toad 的编码设置为 UTF-8 并且 .txt 也以 utf-8 编码。我正在使用外部表读取带有 ® 符号的 .txt 文件。现在,当我通过外部表看到它时,我得到一个?在表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多