批量生成sql语句,难得

在工作我们常常要批量生成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,回车即可执行

  

原文地址:https://www.cnblogs.com/chenzhelove/p/12655642.html