Oracle数据库导⼊数据和编码问题
配置 control ⽂件:
load data
characterset utf8
append into table role_res_gold
fields terminated by ';'
TRAILING NULLCOLS
(
truncate删除数据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 data=$file direct=true
特别说明:
control ⽂件⾥⾯配置的是源⽂件编码: characterset utf8
导⼊到数据库后,就是数据库的默认编码,不再是源⽂件编码!!!
查看 Oracle 编码:
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快得多。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论