程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 積跬步,聚小流------oracle快捷添加測試數據

積跬步,聚小流------oracle快捷添加測試數據

編輯:Oracle教程

積跬步,聚小流------oracle快捷添加測試數據


前一陣子在實施中發現問題,需要當時進行修改,而因為數據庫中數據是真實數據,不能進行修改,否則會出大纰漏吧,於是添加測試數據來方便修改,而單個添加效率太低下了,所以解決的辦法就是以真實的數據為模板增添新方便刪除的數據即可,就像將2014年的數據復制一份只將年份進行修改,刪除的時候講這個不存在的年份數據刪除即可。

相信大家很容易會想到這個方法,也很容易做出答案,舉個例子:

\

看這個表,因為主鍵中都是以當年年份開頭的,同時年度也是當年年份,這樣我們就可以進行添加修改:

假使說這個表格存在如下列:

btfid、production、code、retrieveid、location、tobaccostation、plantvillage、cooperation、tobaccotechnician、eastlong、eastlat、southlong、southlat、westlong、westlat、northlong、northlat、amsl、totalarea

那樣我們可以可以這樣寫:

 

insert into 
arc_basictobaccofield
select '2016' || substr(btfid, 5),
       '2016',
       code,
       retrieveid,
       location,
       tobaccostation,
       plantvillage,
       cooperation,
       tobaccotechnician,
       eastlong,
       eastlat,
       southlong,
       southlat,
       westlong,
       westlat,
       northlong,
       northlat,
       amsl,
       totalarea
  from arc_basictobaccofield
 where tobaccostation = '37030405C'
   and productionyear = 2015

然後在刪除的時候只需要將年份為2016的全部刪除即可,但是這裡還存在一個問題,實際上表的屬性可能不僅僅只有這麼點列,事實上,就算只有這幾列,也遠遠大於我們需要修改的兩列數據了,我們是不是可以有更好的辦法來解決它呢?

 

答案是肯定的,這樣我們倒過來思考下,我們只需要修改兩列而已,那我們就把所有數據取出來,將這兩列數據修改之後進行插入不就可以了麼,我們來寫下看:

首先我們來創建一個臨時表:

 

create table arc_basictobaccofield1 as 

select * from arc_basictobaccofield where tobaccostation='37030405C' and productionyear=2015

然後我們將需要修改的列進行修改:

 

 

update arc_basictobaccofield1 set productionyear=2015

update arc_basictobaccofield1 set btfid ='2015'||substr(btfid,5)

這時候將修改後的數據導入我們需要導入的表中:

 

 

insert into arc_basictobaccofield select * from arc_basictobaccofield1

最後這一步還是很關鍵的,千萬不能忘掉:檢查導入數據,然後刪除臨時表

 

 

drop table arc_basictobaccofield1

這樣再來看,是不是不需要估計真實表究竟有多少列了呢,可見許多時候換個思考方式還是很有效率的

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved