⑴ oracle中怎麼插入多條數據
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 語句來一次性插入一個集合,這種主要依據於要插入的數據源已經存儲於資料庫對象中,或者利用al虛表來構造數據,經過加工後寫入一個集合。
insert into test (xh,mx) select '123','測試' from al;
3、採用plsql等工具、或者oracle的imp、impdp命令來導入,這種主要用資料庫與資料庫之間的大批量數據導入,導入的數據格式為plsql的pde、oracle的dmp等。dmp文件可使用
table_exists_action參數控制導入動作:replace替換原表,truncate清除原表數據再導入,append增量導入數據,當然impdp數據泵的導入要依賴於directory路徑。
impdp 用戶名/密碼 mpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append
4、使用excel文件直接拷貝。這種主要用於要寫入的數據已是excel文件或者行列分明的其它格式文件,每一列的值和表結構相對應,可直接打開表的行級鎖,把數據拷貝進入。
打開行級鎖方法:
select t.*,rowid from 表名 t where 1=2;
select * from 表名 where 1=2 for update;
直接把excel數據拷貝到表裡
⑵ 我是一個初學者,如何向oracle資料庫表中插入數據
工具/材料:電腦,oracle資料庫表
1.例test表中有如下數據。
⑶ oracle 插入數據
如果ID是數字型的,你可以用MAX函數,例如:
insert into table_name
select max(id) + 1 ,$name,$age,$sex
from table_name;
這樣的SQL可以算出最大的id號,然後在此基礎上+1,就變成每次插入一條數據的時候取最大的值.也可以使用rownum這樣的欄位來實現.
另外,補充說明一下,ORACLE中沒有自增長的欄位,我們都是使用序列實現的,自己寫一個小過程或者函數,每次插入的時候調取一下函數,獲取最大的序列號,然後將該序列號自增,即可.
⑷ Oracle中插入數據怎麼弄
前提:在做insert數據之前,如果是非生產環境,請將表的索引和約束去掉,待insert完成後再建索引和約束。
insert into tab1 select * from tab2; commit;
這是最基礎的insert語句,我們把tab2表中的數據insert到tab1表中。根據經驗,千萬級的數據可在1小時內完成。但是該方法產生的arch會非常快,需要關注歸檔的產生量,及時啟動備份軟體,避免arch目錄撐爆。
alter table tab1 nologging;
insert /*+ append */ into tab1 select * from tab2;
commit; alter table tab1 logging;
該方法會使得產生arch大大減少,並且在一定程度上提高時間,根據經驗,千萬級的數據可在45分鍾內完成。但是請注意,該方法適合單進程的串列方式,如果當有多個進程同時運行時,後發起的進程會有enqueue的等待。注意此方法千萬不能dataguard上用,不過要是在database已經force logging那也是沒有問題的。
insert into tab1 select /*+ parallel */ * from tab2; commit;
對於select之後的語句是全表掃描的情況,我們可以加parallel的hint來提高其並發,這里需要注意的是最大並發度受到初始化參數parallel_max_servers的限制,並發的進程可以通過v$px_session查看,或者ps -ef |grep ora_p查看。
alter session enable parallel dml;
insert /*+ parallel */ into tab1 select * from tab2; commit;
⑸ 在oracle中怎麼將查詢到的數據插入到另一個表中
1、首先,一個學生數據表,在這里需要修改數據表中StudentName數據表中的個人數據,如下圖所示,然後進入下一步。
⑹ 如何使用oracle函數插入數據
如果是簡單視圖可以直接插入數據,跟表的操作是一樣的;
如果是復雜的試圖(視圖定義中有分組,聚合函數,多表關聯等)不能直接插入數據,可以通過創建一個 INSTEAD 類型的觸發器來操作,將要插入的數據插入到組成試圖的各個表中 即用你觸發器中的具體操作來代替你直接插入數據到視圖的操作;
⑺ oracle如何創建表以及向表裡面添加數據
1:首先打開oracle,在左側中右擊選擇新建表。
⑻ oracle怎麼快速插入一條數據
在insert into語句中添加指定的欄位即可。 如以下數據: test1表中: test表與test1表結構相同,但目前無數據,現在要求將test1中的id插入到test中,不處理name欄位,可用如下語句: insert into test(id) select id from test1;commit;執行後,...
⑼ 怎麼在oracle資料庫插入數據
ORA-00604: 遞歸 SQL 級別 1 出現錯誤,ORA-01000: 超出打開游標的最大數
這兩個錯誤一般出現在利用代碼循環執行資料庫命令(例如將數據導入到資料庫)時,例如在C#中
1)建立一個OracleConnection
2)循環創建OracleCommand,並執行數據導入
3)關閉OracleConnection
當第二步的循環數比較小時,代碼運行正常。當循環數超過一定值(例如300),代碼就會出錯。提示:
ORA-01000: 超出打開游標的最大數
這是因為Oracle資料庫中打開的游標最大數為一定值,例如300,當代碼中第二步時, 循環中一個Command佔用了一個資料庫游標,執行的循環超過這個數時就會產生游標數目溢出錯誤。
解決辦法:
第二步循環中中每次執行完OracleCommand,都將command.dispose()下,釋放掉這個資源就好了
此外,也可以修改資料庫的最大游標數,不過這個方法治標不治本。
⑽ 如何在oracle資料庫中的表裡批量插入記錄
1.
如果是對其它數據表中進行插入,可利用語句insert
into
A(欄位名)
select
相應的欄位名
from
B;commit;
2.
如果是從其它文檔進行批量插入,可把文檔導入都oracle的臨時表,可通過復制黏貼的方法,把相應欄位的數據復制到臨時表中,再進行1中操作