oracle导入数据和编码问题

配置contrl文件

load data
characterset utf8
append into table role_res_gold
fields terminated by ';'
TRAILING NULLCOLS
(
F_USERNAME      ,
F_RES_TYPE      ,
F_INDEX            ,
F_NAME            ,
F_COUNT            ,
F_GAIN_TYPE        CONSTANT  "aa", //CONSTANT 是关键字,用常量替换行里面内容
F_CONSUME_TYPE    FILLER, // FILLER 关键字 此列的数值不会被装载
RECORD_DATE     date "yyyy-mm-dd hh24:mi:ss" nullif (RECORD_DATE="null")
)

导入命令

sqlldr userid=username/passwd@sid control=ctl.txt data=$file direct=true

特别说明:

control文件里面配置的是源文件编码:characterset utf8

导入到数据库后,就是数据库的默认编码,不再是源文件编码!!!

查看orale编码

select userenv('language') from dual;

例如我的数据库是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,导入后字段内容的编码就变成了GBK

 

表装载的方法:

INSERT 这是缺省方法。该方法假设在数据装载前表是空的,如果在表中有记录,SQLLDR退出,并报:SQLLDR-601: FOR INSERT OPTION,TABLE MUST BE EMPTY,ERROR ON TABLE DEPT

APPEND这种方法允许记录被添加到数据库表中,而且不影响已经存在的记录

REPLACE 这种方法首先删除表中已经存在的记录,然后开始装载新的记录。注意,当老记录被删除时,表上的任意删除触发器将被触发

TRUNCATE 这种方法在装载数据前,使用SQL命令TRUNCATE 删除老的记录,因为去除了触发器的触发并且没有创建回滚,所以这种方法要比REPLACE快得多。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值