Oracle Sqlload 导入数据

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

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

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

create sequence VM_ID_SEQ
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
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=256,errors=50000)
  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;

#5 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}

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

你可能感兴趣的:(Oracle Sqlload 导入数据)