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编写定时任务