Oracle Sqlload 导入数据

sqlload导入数据具有快,简单,无需校验等方便,多说无益

1 首先,oracle数据库要有这么个表,用来接收数据。我这里这个uuid是序列生成的,当然也可以sqlload导入时候分配uuid

--建表
CREATE  TABLE ARADMIN.VM_INFO_Dayly
   (UUID int  primary key,
   VMNAME ),
  VMID ),
  ESXIP ),
  ESXID ) ,
  CLUSTERNAME ),
  DATASTORE ),
  IMTIME date default sysdate not null,
  STATUS ))
--建立序列

create sequence VM_ID_SEQ
minvalue
maxvalue
start
increment
nocache;

 --建立一个触发器:
 CREATE OR REPLACE TRIGGER TRG_VM
   BEFORE INSERT ON VM_INFO_Dayly
   FOR EACH ROW
 BEGIN
   SELECT VM_ID_SEQ.NEXTVAL INTO :NEW.UUID FROM DUAL;
 END TR_FCBOOK;

2 然后编写sqlload导入的控制文件,用于控制导入数据的列和数量,replace导入还是append等(linux上)

 #cat Vmdata.ctl
OPTIONS (rows=,errors=)
  load   data
  append into table VM_INFO_Dayly
  fields terminated by ','
  trailing nullcols
(
UUID,
VMNAME,
VMID,
ESXIP,
ESXID,
CLUSTERNAME,
DATASTORE
) 

当然这个uuid可以导入时候指定,并且是全球唯一啊, UUID "sys_guid()",

3 然后建立sqlload导入的脚本(linux上)

注意,下面export NLS_LANG的值,一定要和数据库匹配,可以登录数据库进行查询>select userenv('language') from dual;

# sqlload导入数据库
export ORACLE_SID=XE
export NLS_LANG=american_america.AL32UTF8

#数据库结构控制文件
CTL_FILE=/Vminfo/Vmdata.ctl
#sqlload输出日志文件
LOG_FILE=/Vminfo/sqlload.log
#数据文件
DATA_FILE=/Vminfo/Vmdata${ddate}.txt

sqlldr ARADMIN/clmAdm1n@10.200.108.100/XE control=${CTL_FILE} data=${DATA_FILE} log=${LOG_FILE}

# Clean log files
# clear yesterday's data
rm -f /Vminfo/Vmdata${yydate}.txt /Vminfo/Vmdata${ydate}.bad /Vminfo/Export66VMinfo${yydate}.csv /Vminfo/Export32VMinfo${yydate}.csv /Vminfo/ExportAllVMinfo${yydate}.csv
clm-db1:/Vminfo # 

4 建立定时任务,每天执行该sqlload导入脚本

使用crontab -e编写定时任务

上一篇:登山(Climb)


下一篇:Go 语言中的 new() 和 make()的区别