在工作我们常常要批量生成sql文件,因为业务部门经常给我们的是excel文件,根据我的经验,推荐两种批量生成sql文件方式
1.excel批量生成sql ,sql语句如下
INSERT INTO TableName(ID,USERNAME,MANAGERID2) VALUES('"&列名&"','"&列名&"','"&列名&"');
但是这个里面会有问题如果是有时间类型呢 ,就会出现数字,那么怎么解决呢 ,1.首先把时间列设置文本格式,2.把生成的sql放到桌面新建的文本里面
具体详细可见下面图片
含时间类型sql如下,记住sql
="INSERT INTO TableName(m_no,m_date1,m_date_open,m_date_close) VALUES('"& A2 &"',to_date('"& B2 &"','yyyy-mm-dd'),to_date('"& C2 &"','yyyy-mm-dd'),to_date('"& D2 &"','yyyy-mm-dd'));"
同理,update语句如下
="update m_store set 字段1='" & B2 & "',字段2='" & B2*1 & "' where 字段三='" & B3 & "';"
2.第二种批量生成sql的方法
sql生成sql语句,为什么呢,因为存在跨库的原因,如果没有link就需要,执行sql文件,主要适应的条件是跨库
sql语句的写法如下:
SELECT 'update ds36.occ_file set occud10 = 2 , occud12 = to_number('||''''||a2||''''||') where occ01 ='||''''||a1||''''||''||';',a3 FROM (
SELECT nvl(EXTRACTVALUE(xmltype(fi.fieldvalues),'/CreditProcessForm/Textbox54'),EXTRACTVALUE(xmltype(fi.fieldvalues),'/CreditProcessForm/Textbox24')) a1 ,EXTRACTVALUE(xmltype(fi.fieldvalues),'/CreditProcessForm/Textbox75') a2,EXTRACTVALUE(xmltype(fi.fieldvalues),'/CreditProcessForm/SerialNumber') a3
from ProcessInstance pi inner join ProcessContext pc on pc.containeroid=pi.oid
inner join LocalRelevantData lrd on lrd.containeroid=pc.oid
inner join FormInstance fi on fi.oid=lrd.valueoid where pi.currentstate = 3 AND pi.serialnumber LIKE '%PKG15783854472041_clone%'
--标识符 PKG15783854472041_clone
)
批量生成sql语句后,只需要导出excel,sql语句,放到文本里面就会非常的方便
3.最终我们都要执行sql文件,怎么创建sql文件呢,很简单,新建文本文件,把sql语句放进去,把后缀txt,改成.sql文件
在plsql里面new -->Command Window
记得把sql文件路径拷下来,到时候执行时候@D:\1.sql,回车即可执行