Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

2

主题
1#
发表于 2012-12-27 13:08:16 | 查看: 4985| 回复: 4

外部表和sqlloader到底存在什么方面的区别啊?
利用外部表,在加载一个文件时,始终有几条记录出现问题。
有问题记录:
00668|美力星空|60066801165|爱而远之|任珅|A|

其实就是“任珅”的的珅字含有竖线的二进制编码值,造成外部表加载失败。但是通过sqlloder加载就可以成功。外部表也指定了characterset参数。不知道这两个存在什么区别?

外部表建表部分:
ACCESS PARAMETERS
      ( RECORDS DELIMITED BY '\n' CHARACTERSET ZHS16GBK

sqlloader部分:
load data
CHARACTERSET ZHS16GBK

为什么外部表就加载出问题,而sqlloader就可以成功加载?
5#
发表于 2012-12-28 21:54:47
没看出来……要给出完整的code的……

回复 只看该作者 道具 举报

4#
发表于 2012-12-27 13:37:55
CREATE TABLE "SMELTER"."IF_TEST_T"
("COL1" VARCHAR2(40),
        "COL2" VARCHAR2(50),
        "COL3" VARCHAR2(20),
        "COL4" VARCHAR2(100),
        "COL5" VARCHAR2(100),
        "COL6" VARCHAR2(10),
        "COL7" VARCHAR2(20),
        "COL8" VARCHAR2(20),
        "COL9" VARCHAR2(20),
        "COl10" VARCHAR2(20),
        "COL11" VARCHAR2(30),
        "COL12" VARCHAR2(20),
        "COL13" VARCHAR2(30),
        "COL14" VARCHAR2(50),
        "COL15" VARCHAR2(50),
        "COL16" VARCHAR2(100),
        "COL17" VARCHAR2(100),
        "COL18" VARCHAR2(15)
   )
   ORGANIZATION EXTERNAL
    ( TYPE ORACLE_LOADER
      DEFAULT DIRECTORY "TEST"
      ACCESS PARAMETERS
      ( RECORDS DELIMITED BY '\n' CHARACTERSET ZHS16GBK
     BADFILE '2.bad' DISCARDFILE '2.dsc' LOGFILE '2.log' FIELDS TERMINATED BY '|' LDRTRIM
    MISSING FIELD VALUES ARE NULL
    ( "COL1" CHAR(255)
           TERMINATED BY '|'
      ,"COL2" CHAR(255)
           TERMINATED BY '|'
      ,"COL3" CHAR(255)
           TERMINATED BY '|'
      ,"COL4" CHAR(255)
           TERMINATED BY '|'
      ,"COL5" CHAR(255)
           TERMINATED BY '|'
      ,"COL6" CHAR(255)
           TERMINATED BY '|'
      ,"COL7" CHAR(255)
           TERMINATED BY '|'
      ,"COL8" CHAR(255)
           TERMINATED BY '|'
      ,"COL9" CHAR(255)
           TERMINATED BY '|'
      ,"COL10" CHAR(255)
           TERMINATED BY '|'
      ,"COL11" CHAR(255)
           TERMINATED BY '|'
      ,"COL12" CHAR(255)
           TERMINATED BY '|'
      ,"COL13" CHAR(255)
           TERMINATED BY '|'
      ,"COL14" CHAR(255)
           TERMINATED BY '|'
      ,"COL15" CHAR(255)
           TERMINATED BY '|'
      ,"COL16" CHAR(255)
           TERMINATED BY '|'
      ,"COL17" CHAR(255)
           TERMINATED BY '|'
      ,"COL18" CHAR(255)
           TERMINATED BY '|'
      )
                        )
      LOCATION
       ( 'a.txt'
       )
    )
   REJECT LIMIT UNLIMITED ;

控制文件:
load data
CHARACTERSET ZHS16GBK
infile '/etldata/sdata/dir0415/a.txt'
truncate
INTO TABLE ODS_MUSIC_COPYRIGHT_COD_tmp
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
(
"COL1" CHAR(255)
           TERMINATED BY '|'
      ,"COL2" CHAR(255)
           TERMINATED BY '|'
      ,"COL3" CHAR(255)
           TERMINATED BY '|'
      ,"COL4" CHAR(255)
           TERMINATED BY '|'
      ,"COL5" CHAR(255)
           TERMINATED BY '|'
      ,"COL6" CHAR(255)
           TERMINATED BY '|'
      ,"COL7" CHAR(255)
           TERMINATED BY '|'
      ,"COL8" CHAR(255)
           TERMINATED BY '|'
      ,"COL9" CHAR(255)
           TERMINATED BY '|'
      ,"COL10" CHAR(255)
           TERMINATED BY '|'
      ,"COL11" CHAR(255)
           TERMINATED BY '|'
      ,"COL12" CHAR(255)
           TERMINATED BY '|'
      ,"COL13" CHAR(255)
           TERMINATED BY '|'
      ,"COL14" CHAR(255)
           TERMINATED BY '|'
      ,"COL15" CHAR(255)
           TERMINATED BY '|'
      ,"COL16" CHAR(255)
           TERMINATED BY '|'
      ,"COL17" CHAR(255)
           TERMINATED BY '|'
      ,"COL18" CHAR(255)
           TERMINATED BY '|'
)

是记录出现了错位。
外部表加载进去后是这样子的:
COL4                 COL5       COL6       COL7
-------------------- ---------- ---------- ----------
爱而远之             任                    A

而通过sqlloader加载记录是这样子的:
COL4                 COL5       COL6       COL7
-------------------- ---------- ---------- ----------
爱而远之             任珅       A          2011-08-18

数据库版本: ORACLE 11R2, AIX RAC

回复 只看该作者 道具 举报

3#
发表于 2012-12-27 13:28:20
任何问题先说版本

造成外部表加载失败  报什么错误?

请给出完整的 外部表语句和 sqlldr 控制文件语句

回复 只看该作者 道具 举报

2#
发表于 2012-12-27 13:10:54
我数据库的字符集是:AL32UTF8.
数据库版本:ORACLE 11G

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 06:24 , Processed in 0.052965 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569