sqlserver批量,sqlserver批量添加數(shù)據(jù)

mybatis-plus解決 sqlserver批量插入list報錯

解決版本:3.0.6

創(chuàng)新互聯(lián)公司專注于嘉蔭網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供嘉蔭營銷型網(wǎng)站建設(shè),嘉蔭網(wǎng)站制作、嘉蔭網(wǎng)頁設(shè)計、嘉蔭網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造嘉蔭網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供嘉蔭網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

原因分析:mybatis-plus默認使用Jdbc3KeyGenerator進行添加,但是sqlserver不支持批量返回id,所以會拋出如下異常

解決方案: 重寫默認saveBatch和saveOrUpdateBatch(缺點是批量添加不能返回id,對于不需要返回id的場景適用)將Jdbc3KeyGenerator替換為NoKeyGenerator

第一步: 建立NoahSqlMethod(也可以不寫,但是項目盡量不出現(xiàn)魔法值)

第二步: 建立InsertBatch對象

第三步: 建立NoahSqlInjector對象

第四步: 重寫ServiceImpl超類為AbstractNoahServiceImpl

第五步: 將業(yè)務(wù)service繼承類改為AbstractNoahServiceImpl

第六步: 將SqlInjector注入系統(tǒng)中

請問SQL如何實現(xiàn)批量查詢

好像解決辦法有點愚蠢,但是確實可以這么用

先把那1000多個號碼導(dǎo)出成文本

然后在sqlserver里建一張表

create

table

shenfenzheng

(shengfenzheng_id

varchar(18));

然后把導(dǎo)出的文本用UE編輯成

insert

into

shenfenzheng

values

('xxxxxxxxxxxxxxxxxx');

insert

into

shenfenzheng

values

('yyyyyyyyyyyyyyyyyy');

.

.

.

共1000條

然后在sqlserver里執(zhí)行上述語句,記得后邊一定要帶分號

然后寫個查詢

select

*

from

工資表

where

身份證號

in(select

shenfenzheng_id

from

shenfenzheng);

得到的就是你想要的結(jié)果

---------補充---------

你所說的用戶是指客戶端程序的用戶,和數(shù)據(jù)庫用戶關(guān)系應(yīng)該不大,各個客戶端應(yīng)該在程序里都有連接數(shù)據(jù)庫的文件,也就是實際操作的用戶連接數(shù)據(jù)庫時用的都是數(shù)據(jù)庫同一個用戶,所以不用在每個用戶下都建臨時表

SQLSERVER數(shù)據(jù)庫中批量導(dǎo)入數(shù)據(jù)的幾種方法

我們通過SQL腳本來插入數(shù)據(jù),常見如下四種方式。

方式一:一條一條插入,性能最差,不建議使用。

INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛欄1段',160);INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛欄2段',260);

......

方式二:insert bulk

語法如下:

BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' }

WITH ?(

[ BATCHSIZE [ = batch_size ] ],

[ CHECK_CONSTRAINTS ],

[ CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ],

[ DATAFILETYPE [ = 'char' | 'native'| 'widechar' | 'widenative' ] ],

[ FIELDTERMINATOR [ = 'field_terminator' ] ],

[ FIRSTROW [ = first_row ] ],

[ FIRE_TRIGGERS ],

[ FORMATFILE = 'format_file_path' ],

[ KEEPIDENTITY ],

[ KEEPNULLS ],

[ KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ],

[ LASTROW [ = last_row ] ],

[ MAXERRORS [ = max_errors ] ],

[ ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ],

[ ROWS_PER_BATCH [ = rows_per_batch ] ],

[ ROWTERMINATOR [ = 'row_terminator' ] ],

[ TABLOCK ],

) ?

相關(guān)參數(shù)說明:

BULK INSERT

[ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]

FROM 'data_file'

[ WITH

(

[ [ , ] BATCHSIZE = batch_size ] ? ?--BATCHSIZE指令來設(shè)置在單個事務(wù)中可以插入到表中的記錄的數(shù)量

[ [ , ] CHECK_CONSTRAINTS ] ? ? --指定在大容量導(dǎo)入操作期間,必須檢查所有對目標表或視圖的約束。若沒有 CHECK_CONSTRAINTS 選項,則所有 CHECK 和 FOREIGN KEY 約束都將被忽略,并且在此操作之后表的約束將標記為不可信。

[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] ?--指定該數(shù)據(jù)文件中數(shù)據(jù)的代碼頁

[ [ , ] DATAFILETYPE =

{ 'char' | 'native'| 'widechar' | 'widenative' } ] ?--指定 BULK INSERT 使用指定的數(shù)據(jù)文件類型值執(zhí)行導(dǎo)入操作。

[ [ , ] FIELDTERMINATOR = 'field_terminator' ] ?--標識分隔內(nèi)容的符號

[ [ , ] FIRSTROW = first_row ] ? ?--指定要加載的第一行的行號。默認值是指定數(shù)據(jù)文件中的第一行

[ [ , ] FIRE_TRIGGERS ] ? ? --是否啟動觸發(fā)器

[ [ , ] FORMATFILE = 'format_file_path' ]

[ [ , ] KEEPIDENTITY ] ? --指定導(dǎo)入數(shù)據(jù)文件中的標識值用于標識列

[ [ , ] KEEPNULLS ] ? ?--指定在大容量導(dǎo)入操作期間空列應(yīng)保留一個空值,而不插入用于列的任何默認值

[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]

[ [ , ] LASTROW = last_row ] ? --指定要加載的最后一行的行號

[ [ , ] MAXERRORS = max_errors ] ? --指定允許在數(shù)據(jù)中出現(xiàn)的最多語法錯誤數(shù),超過該數(shù)量后將取消大容量導(dǎo)入操作。

[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] ?--指定數(shù)據(jù)文件中的數(shù)據(jù)如何排序

[ [ , ] ROWS_PER_BATCH = rows_per_batch ]

[ [ , ] ROWTERMINATOR = 'row_terminator' ] ? --標識分隔行的符號

[ [ , ] TABLOCK ] ? ? --指定為大容量導(dǎo)入操作持續(xù)時間獲取一個表級鎖

[ [ , ] ERRORFILE = 'file_name' ] ? --指定用于收集格式有誤且不能轉(zhuǎn)換為 OLE DB 行集的行的文件。

)] ?

方式三:INSERT INTO xx select...

INSERT INTO Product(Id,Name,Price) SELECT NEWID(),'牛欄1段',160

UNION ALL

SELECT NEWID(),'牛欄2段',180 UNION ALL......

方式四:拼接SQL

INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛欄1段',160)

,(newid(),'牛欄2段',260)

......

網(wǎng)站名稱:sqlserver批量,sqlserver批量添加數(shù)據(jù)
本文網(wǎng)址:http://muchs.cn/article8/phijip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、Google、App開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)