大量汇出表格资料至Oracle时,您可以选取plsql,但这太慢了。特别是,如果数据量超过数万个,plsql将直接阻止。
在这边我们通过一个脚本,直接将数据导出,只需要配置简单的字段。ou脚本中修改数据库链接信息
#!/bin/sh CurMM=`date +%m` MM=`expr $CurMM - 1` if [ `echo "$MM" | wc -m` -ne 3 ] then MM=0${MM} fi #从配置中获取行数,文件名前缀 lines=`grep maxLine $1|cut -d'=' -f2` busiType=`grep preName $1|cut -d'=' -f2` #拼凑文件名 preName="${busiType}`date +%Y`${MM}_`date +%Y%m%d`.txt" #获取文件输出路径 outPath=`grep outPath $1|cut -d'=' -f2` outFile="${outPath}${preName}" #获取sql tmp=`grep fileds $1` fileds=${tmp#*=} #导出文本 echo "outFile:${outFile}" sqlplus -S "cash_bill/cash_bill123@135.224.85.43/cash" <<EOF>/dev/null #sqlplus -S "cash_bill/cash_bill123@135.224.85.43/cash" SET FEEDBACK OFF; SET HEADING OFF; SET ECHO OFF; SET TERM OFF; SET LINESIZE 32766; SET PAGESIZE 0; set trimout ON; set trimspool ON; alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; spool ${outFile}; ${fileds}; spool off; quit EOF ## 将大文件按条数分割成小文件 ## j [file] [outpath] [lineInfile] ## sh j ${outFile} ${outPath} ${lines} ${headType}只需修改配置文件的sql语句,以及文件头,输出路径,单个文件最大条数
fileds=SELECT RULE_ID || ';' ||RULE_DESC FROM DATA_RULE preName=DATA_RULE_ outPath=/appdata/webtest/outora/data/ maxLine=100000命令行执行导出命令
ou