在工作我們常常要批量生成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,回車即可執行