oracle如何批量造數據,oracle存儲過程批量修改數據
oracle表批量插入數據
兩種方法
成都創新互聯公司網站建設公司,提供成都做網站、網站設計、外貿營銷網站建設,網頁設計,建網站,PHP網站建設等專業做網站服務;可快速的進行網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,是專業的做網站團隊,希望更多企業前來合作!
1. 使用pl/sql developer
這種方法比較簡單,我曾經這么一次導入過幾萬條記錄
2.sqlldr
首先將你的excel文件另存為csv格式(默認逗號間隔,另存為csv,不只是改后綴名)
然后用sqlldr導入。sqlldr的參數很多,簡單的幾個就可以了:
建一個控制文件control.txt:
load data
infile 'f:\test.csv'
into table test1
(id char terminated by ',',
name char terminated by ',',
height char terminated by ',',
birth char terminated by whitespace)
----這里你根據需要,修改數據文件的名字和路徑。括號里面的字段名和字段數也根據實際情況修改。由于保存的是csv,字段間以逗號隔開,因此控制文件里定義最后一個字段以whitespace來分隔,其它的用','
然后使用sql*loader:
sqlldr userid=USERNAME/PASSWORD@XXXX control=f:\control.txt log=f:\test.log bad=f:\testbad.csv
userid后跟用戶名密碼,@后的是網絡服務名,需要在客戶端的tnsnames.ora文件里定義。control后的值是剛剛建的控制文件的路徑,日志將生成在log參數指定的位置上,如果有記錄沒有導入成功,這些記錄會放置在bad后指定的文件里。
Oracle中使用PL/SQL怎樣用循環插入多條數據?
使用loop循環,比如:
for item in (select a,b,c from table_a where 條件) loop
insert into table_b(a,b,c) values (item.a,item.b,item.c);
end loop;
也可以使用索引表循環,以上只是一個簡單的例子,需要根據你的具體情況選擇循環方式。
1、采用insert into values 語句插入一條,寫很多條語句即可多條數據,這種主要針對于離散值以及一些基礎信息的錄入,如:insert into test(xh,mc) values('123','測試');
如果插入的數據有規律,可利用for、loop循環插入,主要用于批量生成測試數據
begin
for i in 1 .. 100 loop
insert into test(xh,mc) values(i||'','測試');
end loop;
end ;。
2、采用insert into selct from 語句來一次性插入一個集合,這種主要依據于要插入的數據源已經存儲于數據庫對象中,或者利用dual虛表來構造數據,經過加工后寫入一個集合。
insert into test (xh,mx) select '123','測試' from dual;
3、采用plsql等工具、或者oracle的imp、impdp命令來導入,這種主要用數據庫與數據庫之間的大批量數據導入,導入的數據格式為plsql的pde、oracle的dmp等。dmp文件可使用
table_exists_action參數控制導入動作:replace替換原表,truncate清除原表數據再導入,append增量導入數據,當然impdp數據泵的導入要依賴于directory路徑。
impdp 用戶名/密碼 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append。
4、使用excel文件直接拷貝。這種主要用于要寫入的數據已是excel文件或者行列分明的其它格式文件,每一列的值和表結構相對應,可直接打開表的行級鎖,把數據拷貝進入。
oracle存儲過程怎樣批量插入新數據
需要生成的SQL
insert into TMP_UPSTATE_CASEKEY values('TMP0000001', 1, sysdate);
存儲過程實現
create or replace procedure proc_casekey_upstate
as
casekey char(14);
begin
for i in 1..10000000 loop
casekey := 'TMP'||lpad(i,7,0); -- TMP0000001
insert into TMP_UPSTATE_CASEKEY values(casekey, 1, sysdate);
end loop;
commit;
end;
begin
proc_casekey_upstate();
end;
測試發現生成一千萬條數據用了14分鐘左右,性能還是可以了,如果先去掉TMP_NUM_STATUS_ID的外鍵估計更快。
或者:
insert into TMP_UPSTATE_CASEKEY select 'TMP'||LPAD(rownum,7,0),1,sysdate from dual connect by level = 1000000;
oracle如何快速簡單的批量造數據
可以通過第三方工具來處理,比如powerdesigner
具體可以度娘 'powerdesigner 測試數據'
怎么批量往oracle數據庫中造大量的數據
那要看你需要什么類型的數據了。
最簡單的,寫一個存儲過程,在里頭添加一個insert,循環個 大量 次數。
如果存在其他表中有大量數據的,也可以
insert 新表 select from 其他表。
注意一下字段類型。
Oracle 批量插入數據怎么做
如果是文本文件(不一定是純文本,execl也可以,另存為文本就可以,只要注意一下分隔符號就可以了),那么sqlloader導入,只要參數設置對了,這個應該是比較快的。
如果是從其他表插入,而且數據量很大,那么就寫腳本分批insert,commit;
當然用其他工具也可以,比如用plsql developer的導入功能,或者復制。
關鍵看是什么類型的數據。
文章題目:oracle如何批量造數據,oracle存儲過程批量修改數據
文章位置:http://www.xueling.net.cn/article/dsggicp.html