1。 准备工作,window中可直接通过sqlload直接导入文件,linux下,需要有sqlload的相关软件。
2。 SQL脚本
load data CHARACTERSET ZHS16GBK infile * into table S_BAD_STATISTIC_LOG APPEND fields terminated by '|' ( SSL_ID, IMSI, TELEPHONE, VERSION, TYPE, CREATE_TIME timestamp "yyyy-mm-dd hh24:mi:ss", FLAG, CITY_CODE )
#!/bin/sh #获取当前目录 currDir=`dirname $0` cd $currDir currDir=`pwd` #数据库连接串 dbConnStr=cms/icity1217@icitydb #数据文件保存目录 dataDir=$currDir/data #控制文件 controlFile=$currDir/sqlldr.ctl #设置环境变量 #ORACLE_HOME=/opt/oracle/product/10201 #PATH=$PATH:$ORACLE_HOME/bin #日志根目录 baseLogDir=$currDir/log #插入失败数据的记录的目录 badLogDir=$baseLogDir/bad #执行日志目录 impLogDir=$baseLogDir/imp #命令执行日志目录 cmdLogDir=$baseLogDir/cmd #创建日志目录 mkdir -p $badLogDir 2> /dev/null mkdir -p $impLogDir 2> /dev/null mkdir -p $cmdLogDir 2> /dev/null for dataFile in `ls ${dataDir}/*.txt` do logDateSuffix=`date "+%Y%m%d%H%M%S"` sqlldr $dbConnStr \ data=$dataFile \ log=$impLogDir/`basename ${dataFile}`.$logDateSuffix.imp \ bad=$badLogDir/`basename ${dataFile}`.$logDateSuffix.bad \ control= $controlFile \ errors= 9999999 > /dev/null \ 2>> $cmdLogDir/`basename ${dataFile}`.${logDateSuffix}.log done
40240884|460036100451807| |421|1|2013-08-14 10:00:00| | 40240925|460029591429558| |632|1|2013-08-14 10:00:00| |3501 40240926|460030138021475| |632|1|2013-08-14 10:00:00| | 40240927|001a9570110c| |632|1|2013-08-14 10:00:00| | 40240928|460009416045734| |632|1|2013-08-14 10:00:00| |