--0.制表符chr(9) 换行符chr(10) 回车符chr(13) windows下批处理.bat linux下批处理.sh
set echo off
set feedback off
set pagesize 0
set trimspool on
set trimout on
set colsep ,
SET LINESIZE 2500
set heading off
SPOOL g:\data\t_test.ctl
select 'a,'||chr(10)||'b' from t where rownum<=100;
SPOOL OFF;

--案例1,(导出exel时,文件名后缀为.csv(逗号分隔让exel和txt互相转化),varchar类型加''''||前缀,导出的exel设置成文本格式,对每列在文本编辑器中取出'后重新复制粘贴;
--colsep指定分隔符,可以是逗号或<等分隔符)
--以下在winndows cmd中测试,生成的文件中仍然会有脚本开始和结束提示
--1.通过rpad让列对齐
set echo off
set heading off
set termout off
set feedback off
set pagesize 0
set trimspool on
set trimout on
set colsep ,
SET LINESIZE 2500
set heading off
SPOOL e:\scgd\划帐信息.txt
select rpad(a.划帐信息,20),rpad(b.格式描述,50),rpad(a.帐户类型,10),rpad(a.送盘格式,10) from 划帐信息 a, 划帐格式 b where a.返盘格式 = b.划帐格式;
SPOOL OFF;

--2.
--sqluldr2第三方工具导出文本,然后用sqlldr导入
--导出数据,tables选项会默认生成sqlldr所用的ctl文件
sqluldr2.exe USER=test/test@gbk11g QUERY="select /*+ parallel(2) */ * from t" table=t head=yes FILE=g:\data\t.txt

--将数据加载到数据库中 skip=1表示跳过第一行,从第二行开始导入
sqlldr jms/jms@tiod control=ent_person_sqlldr.ctl log=ent_person_sqlldr.log bad=ent_person_sqlldr_bad.log skip=1 errors=5000 rows=5000 bindsize=335542

--案例2,导出表的inser语句,或用pl/sql导出表的查询语句
set echo off
set feedback off
set pagesize 0
set trimspool on
set trimout on
set colsep ,
SET LINESIZE 2500
set heading off
spool f:\t30_report.sql
select 'insert into t30_report values ('''||reportkey||''','''||effdt||''','''||reportname||''','''||reporttype||''','''||platform||''','''||flag||''','''||deployflag||''','''||descr||''','''||modifier||''','''||modifydate||''','''||creator||''','''||createdate||''','''||frequency||''','''||isrowfixup||''','''||filluser||''','''||checkuser||''','''||principaluser||''','||callevel||');
commit;' from t30_report t where t.reportkey like 'Z1%' and rownum<=100;
spool off;

--案例3,SQLLDR,装载文本数据(也可以是excel文件)
--SS0_A3410.dat数据格式为
41758,01,0101,999,34q24,24520000.000,9400000.000
41758,01,0101,999,34q27,7695840.000,2000000.000
41758,01,0101,999,34q29,7300000.000,4000000.000
或(用""包裹字符串)
"41758","01","0101","999","34q24","24520000.000","9400000.000"
"41758","01","0101","999","34q27","7695840.000","2000000.000"
"41758","01","0101","999","34q29","7300000.000","4000000.000"

--关键字 replace/truncate/insert into(应=append) excel应转化为csv格式,否则有乱码等异常
--若最后1个字段识别长度超长,则用terminated by whtitespace
--SS0_A3410.ctl 装载文本文件的格式 装载csv时去掉terminated by whtitespace
load data
infile "F:\sqlldr\SS0_A3410.dat"
badfile 'f:\sqlldr\SS0_A3410.bad'
replace into table SS0_A3410
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
JGM,
HBH,
KMH,
JYE,
DYE,
NF terminated by whtitespace
)
--然后
sqlldr userid=ods/ods@srp control=f:\sqlldr\SS0_A3410.ctl log=f:\sqlldr\SS0_A3410.log

--参考 *************************************************
trailing nullcols
(
JGM POSITION (*) CHAR BY ",",
HBH POSITION (*) CHAR BY ",",
KMH POSITION (*) CHAR BY ",",
JYE POSITION (*) CHAR BY ",",
DYE POSITION (*) CHAR BY ",",
NF POSITION (*) CHAR BY ","
)

--生成sqlldr的控制文件 echo后或可以跟' >重定向 通过linux环境的echo生成N个ctl控制文件
select t.be_reportkey,t.datadt,t.reportkey,
'host sqlldr userid=srp/srp@srp control=D:\sqlldr\104zh_pdf_zl\'||t.be_reportkey||'_'||t.datadt||'.ctl log=D:\sqlldr\104zh_pdf_zl\log\'||t.be_reportkey||'_'||t.datadt||'.log'||chr(13)||'update T64_1104ZH_ITEM_TRANS_TMP t1 set t1.reportkey='''||t.reportkey||''',t1.be_reportkey='''||t.be_reportkey||''',t1.organkey=''d9993'',t1.datadt='''||t.datadt||''' where t1.reportkey is null;'||chr(13)||'commit;',
'echo "load data infile ''D:\data\pdf_zl\'||t.be_reportkey||'_'||t.datadt||'.DAT'' badfile ''D:\data\pdf_zl\bad\'||t.be_reportkey||'_'||t.datadt||'.bad'' append into table srp.T64_1104ZH_ITEM_TRANS_TMP fields terminated by '','' optionally enclosed by ''\"'' trailing nullcols (ROW_NUM,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH)" > /zyj/ctl/1104zh/pdf_zl/'||t.be_reportkey||'_'||t.datadt||'.ctl'
from reportkey_bereportkey_pdf t where t.flag='2' order by t.datadt,t.be_reportkey;

--案例4,导出所有存储过程
sqlplus ods/ods@srp

set echo off
set pagesize 0
set trimspool on
set colsep ,
SET LINESIZE 250
set heading off
set feedback off;
spool f:\procedure_spool.sql
select DECODE(T.line,1,REPLACE(T.TEXT,'PROCEDURE','CREATE OR REPLACE PROCEDURE'),T.TEXT) AS TEXT from user_source t where t.TYPE='PROCEDURE' and rownum<=1000;
spool off;

spool_sqlldr的更多相关文章

随机推荐

  1. POJ 2411 Mondriaan's Dream -- 状压DP

    题目:Mondriaan's Dream 链接:http://poj.org/problem?id=2411 题意:用 1*2 的瓷砖去填 n*m 的地板,问有多少种填法. 思路: 很久很久以前便做过 ...

  2. .net string类型集合转int集合

    1.string集合转int集合 //string类型的集合 List<string> tempStr = new List<string>() { "21" ...

  3. VScode插件以及配置

    Auto Rename Tag —— 自动同步修改标签 AutoFileName —— 自动补全路径提示 background —— 一个萌萌的插件,可以自己设置vsc的背景图 Bootstrap 3 ...

  4. MySQL安装后无法用root用户访问的问题

    今天在换了Ubuntu后装个本地的mysql,安装过程没什么好说的:sudo apt-get install mysql-server 安装好了之后我做了以下一系列常规动作: 1.$sudo mysq ...

  5. bugku web 管理员系统

    页面是一个登陆表单,需要账号密码,首先f12查看源代码,发现有一段可疑的注释,明显是base64,解码得到test123,似乎是一个类似于密码的东西,既然是管理员,就猜测用户名是admin,填上去试一 ...

  6. 记录一次有意思的XSS过滤绕过2

    前几天在漏洞挖掘中遇到个xss,感觉绕过过程蛮有意思的,写篇文章记录下. 接下里是我对这个xss详细的分析和绕过 存在问题站点http://******/index/appInfo?appId=784 ...

  7. Zabbix监控磁盘IO值

    iostat取硬盘IO值. iostat -x 3 2 | grep vdb | sed -n '2p' | awk '{print $14}' 每3s取一次值,输出第二次vdb硬盘的负载值. 添加Z ...

  8. mysql 数据库学习笔记一

    一.navicat的引入: (第三方可视化的客户端,方便MySQL数据库的管理和维护)安装网址:https://www.navicat.com.cn/ NavicatTM是一套快速.可靠并价格相宜的数 ...

  9. JS学习笔记Day22

    一.Ajax的概念 (一)Ajax是一种在无需重新加载整个网页(刷新网页)的情况下能够更新部分网页的技术 (二)Ajax的全称是Asynchronous JavaScript and XML,即异步J ...

  10. (三) 查看USB设备

    目录 查看USB设备 lsusb ll /sys/bus/usb/devices cat /sys/kernel/debug/usb/devices dmesg title: 查看USB设备 date ...