聊聊程式設計開發的資料庫批量插入 sql

2022-01-23 20:47:00 字數 1673 閱讀 8103

先說說我們常用的幾種方法,我就不列舉**了。網上都有,大家可以自己試試。

1.事務

開啟乙個事務,將多條語句執行,然後提交。有的資料庫限制sql個數1000.

2.多值插入語法

insert into table(字段) values(字段值),(字段值).

這種語法也是一種批量插入,經過資料庫(驅動)的優化.

但是sqlserver是個特殊,它的語法是insertall

insert all into table (字段) values(字段值)

insert table  (字段) values(字段值)

insert table  (字段) values(字段值)

3.專門的批量處理類

一般資料庫都有乙個批量類處理,我檢視了幾個例子,都是把datatable直接寫入了。

一般類名稱中帶有bulk字樣。也是優化過的

4.檔案匯入

很多資料庫支援csv,就單獨以csv格式檔案為準吧。

資料庫提供有自己的辦法,就當前說的幾類資料庫都有。

oracle是特殊的,其它幾種都是命令列,可以用執行sql的方式執行。但是oracle是工具命令列,也就是專門的乙個工具來支援(工具是sqlldr ),所以oracle需要完整的客戶端支援,至少是包含sqlldr.exe的客戶端。oracle使用程式設計操作時,需要用bat檔案或者啟動sqlldr.exe方式來操作。

5.引數化

直接sql引數化,引數化時設定行數。引數值採用陣列,但是每個欄位的值素組長度必須一樣,比如一次插入1000行,每個素組必須是1000長度。我知道oracle是支援的,其它資料庫未知,所以要自己嘗試,可能不通用。

尤其是第5種方法,我長期使用oracle,其餘幾種沒有,也不打算弄一堆資料庫測試,靠大家努力吧。

附錄轉換處理類

資料庫驅動

名稱說明

oracle

oracle.dataaccess

oraclebulkcopy

mysql

預設mysqlbulkloader

postgresql

預設沒有直接的類。資料庫連線類中有乙個方法beginbinaryimport

網上有乙個擴充套件bulk

sqlserver

預設sqlbulkcopy

附錄檔案匯入

資料庫語句

驅動說明

oracle

sqlldr dbuser/dbpass@dbservice control=users.ctl

預設mysql

load data local infile '/var/lib/mysql/pet.txt' into table tbl_pet

預設postgresql

copy mytable from '/myfile.csv'  with csv  header

預設sqlserver

bulk

insert employee

from 'f:\\mypublis\\testtoinsert.txt' --location with filename

with

fieldterminator = ',',

rowterminator = '\n'

預設

資料庫程式設計 批量插入資料

1.編寫簡單的批量資料插入,可用在效能測試時多資料的壓力測試,檢測網頁,或客戶端介面資料量較多時是否有異常現象,在測試過程中經常需要使用到這種方式,學會這個,以後簡單的插入批量資料就可以自己完成啦,不用再依賴開發了,let s go 2.先檢視需要進行批量插入資料的表結構,例如,乙個 本表,表結構如...

批量插入oracle資料庫

odp技術,引數可以為陣列 注意事項 1 時間處理 防止資料庫中有date型別的資料,不設定格式則會出現無效月份的情況,如 new oracledate 2011 08 26 17 18 19 oracleglobalization og oracleglobalization.getclienti...

DataTable批量插入資料庫

最近在將excel中的檔案匯入到資料庫中,用程式進行編寫,由於資料量較大所以速度很慢,後來採用了sqlbulkcopy類,解決了速度的問題,我就insert語句,sqldataadapter.update dataset,tablename sqlbulkcopy.writetoserver dat...