oracle批量插入資料

2021-08-28 23:12:54 字數 3745 閱讀 7994

值是可以省略的

插入到表名(列值)後跟乙個查詢語句的話就代表值,簡單的說就是後面select select出來的值就是要插入的值,即 

insert into tb(欄位名一,欄位名二)select 欄位名一,欄位名二 from tb

等於insert into tb(欄位名一,欄位名二)values(查出的字段值一,查出來的字段值一);

例子:插入一行id = 3,名字=丁老師,薪水= 5000的記錄

insert

into

teacher(id,name,salary)

select

3, '丁老師'

, 5000

from

teacher

where

notexists

( select

* from

teacher

where

id=3

) limit1;

或者

insert

into

teacher(id,name,salary)

( select

4,'白老師'

,4000

from

teacher

where

notexists

(select

* from

teacher where

id=4

) limit1);

在上面的sql語句中:執行的原理解析:

若teacher表中不存在id=3的那條記錄,則生成要插入表中的資料並插入表;

若teacher表中存在id=3的那條記錄,則不生成要插入表中的資料。

其實程式可以分開看:

① select

* from

teacher where

id=3

若查詢有值,則表示真,即存在id=3

這條記錄,若查詢沒有值則表示假,即不存在id=3

這條記錄,

②若果不存在id=3

這條記錄,那麼又因為 not

exists

本身表示假,即不存在的意思;假假為真,所以此時程式可以形象的理解為

select

3,'丁老師'

,5000

from

teacher where

notexists

(false

) limit1;

等價於select

3,'丁老師'

,5000

from

teacher where

true

limit1;

③所以程式就會生成一行為 3,'丁老師',5000的記錄

④最後生成的資料就會插入表中

createtabletb ( aint,  bint);

-- 一次插入一行資料的寫法: 必須要有  values

insertintotbvalues(1,  2);

insertintotbvalues(1,  3);

go

-- 一次插入一行或者多行資料的寫法: 必須要有  select

insertintotbselect2, 1;

insertintotb

select3, 1unionall

select3, 2unionall

select3, 3;

go

-- 核對資料

select*fromtb

go

a           b

----------- -----------

1           2

1           3

2           1

3           1

3           2

3           3

(6 行受影響)

批量判重插入

id="base_column_list1" >

uuid, systemname, enviromenttype, jobordernum, jobname, executetime, joblogaddress, status

sql>

id="insertdatas"

parametertype="cn.lz.devops.model.datacollectionjobinfo" >

insert into data_collection_job_info

prefix="("

suffix=")"

suffixoverrides="," >

refid="base_column_list1" />

trim>

collection="list"

item="item"

separator="union all"

close=";">

prefix="("

suffix=")"

suffixoverrides="union all" >

select

suffixoverrides="," >

#,#,

#,#,

#,#,#,#

trim>

from data_collection_job_info

where not exists(select * from data_collection_job_info where uuid=#) limit 1

trim>

foreach>

insert>

批量插入資料 Oracle

在使用 oracle 開發期間,或許我們會為編寫一條一條插入語句而困惱,這裡給出 對資料表進行簡單批量插入的例子。以下均是oracle 資料庫操作 insert into cbay user t userid,username,password,userage select test1 test1 ...

Oracle批量插入資料

insert all into tab id,name values 1,amy into tab id,name values 2,tom into tab id,name values 3,jerry select 1 from dual insert all不支援生產id declare i ...

Oracle資料的批量插入

前兩天接到乙個需求 需要程式設計將sql server中的資料插入至oracle。資料大約有20多萬條記錄。開始的時候我採取了直接構建sql插入的方式,結果耗時太長。為了提高效能我上網找了資料。最終採用dataadapter批量插入至oracle,提高了效能。如下 一,直接構建sql語句插入 vb....