Bulk Insert具体订单
Bulk Insert具體訂單
BULK INSERT與用戶指定的格式的數(shù)據(jù)文件復(fù)制到數(shù)據(jù)庫(kù)表或視圖。
語(yǔ)法:
Sql代碼
BULKINSERT[['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],
)
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 ],
)
參數(shù):
'database_name'
是包括指定表或視圖的數(shù)據(jù)庫(kù)的名稱。假設(shè)未指定,則系統(tǒng)默覺(jué)得當(dāng)前數(shù)據(jù)庫(kù)。
'owner'
是表或視圖全部者的名稱。
當(dāng)運(yùn)行大容量復(fù)制操作的用戶擁有指定的表或視圖時(shí),owner 是可選項(xiàng)。假設(shè)沒(méi)有指定 owner 而且運(yùn)行大容量復(fù)制操作的用戶不擁有指定的表或視圖,則 Microsoft® SQL Server? 將返回錯(cuò)誤信息并取消大容量復(fù)制操作。
'table_name'
是大容量復(fù)制數(shù)據(jù)于當(dāng)中的表或視圖的名稱。僅僅能使用那些全部的列引用同樣基表所在的視圖。有關(guān)向視圖中復(fù)制數(shù)據(jù)的限制的很多其它信息,請(qǐng)參見(jiàn) INSERT。
'data_file'
是數(shù)據(jù)文件的完整路徑,該數(shù)據(jù)文件包括要拷貝到指定表或視圖的數(shù)據(jù)。BULK INSERT 從磁盤(pán)復(fù)制數(shù)據(jù)(包括網(wǎng)絡(luò)、軟盤(pán)、硬盤(pán)等)。 data_file 必須從運(yùn)行 SQL Server 的server指定有效路徑。假設(shè) data_file 是遠(yuǎn)程文件,則請(qǐng)指定通用命名規(guī)則 (UNC) 名稱。
BATCHSIZE [ = batch_size ]
指定批處理中的行數(shù)。
每一個(gè)批處理作為一個(gè)事務(wù)復(fù)制至server。SQL Server提交或回滾(在失敗時(shí))每一個(gè)批處理的事務(wù)。默認(rèn)情況下。指定數(shù)據(jù)文件里的全部數(shù)據(jù)是一個(gè)批處理。
CHECK_CONSTRAINTS
指定在大容量復(fù)制操作中檢查 table_name 的不論什么約束。
默認(rèn)情況下。將會(huì)忽略約束。
CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ]
指定該數(shù)據(jù)文件里數(shù)據(jù)的代碼頁(yè)。
僅當(dāng)數(shù)據(jù)含有字符值大于 127 或小于 32 的 char、varchar 或 text 列時(shí),CODEPAGE 才是適用的。CODEPAGE 值 描寫(xiě)敘述 ACP char、varchar 或 text 數(shù)據(jù)類型的列從 ANSI/Microsoft Windows® 代碼頁(yè) ISO 1252 轉(zhuǎn)換為 SQL Server 代碼頁(yè)。
OEM(默認(rèn)值) char、varchar 或 text 數(shù)據(jù)類型的列被從系統(tǒng) OEM 代碼頁(yè)轉(zhuǎn)換為 SQL Server 代碼頁(yè)。 RAW 并不進(jìn)行從一個(gè)代碼頁(yè)到還有一個(gè)代碼頁(yè)的轉(zhuǎn)換。這是最快的選項(xiàng)。 code_page 特定的代碼頁(yè)號(hào)碼,比如 850。
DATAFILETYPE [ = {'char' | 'native' | 'widechar' | 'widenative' } ]
指定 BULK INSERT 使用指定的默認(rèn)值運(yùn)行復(fù)制操作。DATAFILETYPE 值 描寫(xiě)敘述 char(默認(rèn)值) 從含有字符數(shù)據(jù)的數(shù)據(jù)文件運(yùn)行大容量復(fù)制操作。 native 使用 native(數(shù)據(jù)庫(kù))數(shù)據(jù)類型運(yùn)行大容量復(fù)制操作。要裝載的數(shù)據(jù)文件由大容量復(fù)制數(shù)據(jù)創(chuàng)建,該復(fù)制是用 bcp 有用工具從 SQL Server 進(jìn)行的。 widechar 從含有 Unicode 字符的數(shù)據(jù)文件里運(yùn)行大容量復(fù)制操作。 widenative 運(yùn)行與 native 同樣的大容量復(fù)制操作。不同之處是 char、varchar 和 text 列在數(shù)據(jù)文件里存儲(chǔ)為 Unicode。要裝載的數(shù)據(jù)文件由大容量復(fù)制數(shù)據(jù)創(chuàng)建。該復(fù)制是用 bcp 有用工具從 SQL Server 進(jìn)行的。該選項(xiàng)是對(duì) widechar 選項(xiàng)的一個(gè)更高性能的替代,而且它用于使用數(shù)據(jù)文件從一個(gè)運(yùn)行 SQL Server 的計(jì)算機(jī)向還有一個(gè)計(jì)算機(jī)傳送數(shù)據(jù)。
當(dāng)傳送含有 ANSI 擴(kuò)展字符的數(shù)據(jù)時(shí),使用該選項(xiàng)以便利用 native 模式的性能。
FIELDTERMINATOR [ = 'field_terminator' ]
指定用于 char 和 widechar 數(shù)據(jù)文件的字段終止符。默認(rèn)的字段終止符是 /t(制表符)。
FIRSTROW [ = first_row ]
指定要復(fù)制的第一行的行號(hào)。默認(rèn)值是 1,表示在指定數(shù)據(jù)文件的第一行。
FIRE_TRIGGERS
指定目的表中定義的不論什么插入觸發(fā)器將在大容量復(fù)制操作過(guò)程中運(yùn)行。假設(shè)沒(méi)有指定 FIRE_TRIGGERS。將不運(yùn)行不論什么插入觸發(fā)器。
FORMATFILE [ = 'format_file_path' ]
指定一個(gè)格式文件的完整路徑。格式文件描寫(xiě)敘述了含有存儲(chǔ)響應(yīng)的數(shù)據(jù)文件,這些存儲(chǔ)響應(yīng)是使用 bcp 有用工具在同樣的表或視圖中創(chuàng)建的。格式文件應(yīng)該用于下面情況: 數(shù)據(jù)文件含有比表或視圖很多其它或更少的列。列使用不同的順序。
列切割符發(fā)生變化。數(shù)據(jù)格式有其它的改變。通常。格式文件通過(guò) bcp 有用工具創(chuàng)建而且依據(jù)須要用文本編輯器改動(dòng)。有關(guān)很多其它信息。請(qǐng)參見(jiàn) bcp 有用工具。
KEEPIDENTITY
指定標(biāo)識(shí)列的值存在于導(dǎo)入文件里。假設(shè)沒(méi)有指定 KEEPIDENTITY。在導(dǎo)入的數(shù)據(jù)文件里此列的標(biāo)識(shí)值將被忽略,而且 SQL Server 將依據(jù)表創(chuàng)建時(shí)指定的種子值和增量值自己主動(dòng)賦給一個(gè)唯一的值。假如數(shù)據(jù)文件不含該表或視圖中的標(biāo)識(shí)列,使用一個(gè)格式文件來(lái)指定在導(dǎo)入數(shù)據(jù)時(shí),表或視圖中的標(biāo)識(shí)列應(yīng)被忽略;SQL Server 自己主動(dòng)為此列賦予唯一的值。
有關(guān)具體信息,請(qǐng)參見(jiàn) DBCC CHECKIDENT。
KEEPNULLS
指定在大容量復(fù)制操作中空列應(yīng)保留一個(gè)空值。而不是對(duì)插入的列賦予默認(rèn)值。
KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]
指定每一個(gè)批處理中數(shù)據(jù)的近似千字節(jié)數(shù)(KB)。
默認(rèn)情況下,KILOBYTES_PER_BATCH 未知。
LASTROW [ = last_row ]
指定要復(fù)制的最后一行的行號(hào)。
默認(rèn)值是 0,表示指定數(shù)據(jù)文件里的最后一行。
MAXERRORS [ = max_errors ]
指定在大容量復(fù)制操作取消之前可能產(chǎn)生的錯(cuò)誤的最大數(shù)目。不能被大容量復(fù)制操作導(dǎo)入的每一行將被忽略而且被計(jì)為一次錯(cuò)誤。假設(shè)沒(méi)有指定 max_errors。默認(rèn)值為 0。
ORDER ( { column [ ASC | DESC ] } [ ,...n ] )
指定數(shù)據(jù)文件里的數(shù)據(jù)怎樣排序。假設(shè)裝載的數(shù)據(jù)依據(jù)表中的聚集索引進(jìn)行排序,則能夠提高大容量復(fù)制操作的性能。假設(shè)數(shù)據(jù)文件基于不同的順序排序,或表中沒(méi)有聚集索引,ORDER 子句將被忽略。給出的列名必須是目的表中有效的列。
默認(rèn)情況下。大容量插入操作假設(shè)數(shù)據(jù)文件未排序。
n是表示能夠指定多列的占位符。
ROWS_PER_BATCH [ = rows_per_batch ]
指定每一批處理數(shù)據(jù)的行數(shù)(即 rows_per_bacth)。
當(dāng)沒(méi)有指定 BATCHSIZE 時(shí)使用。導(dǎo)致整個(gè)數(shù)據(jù)文件作為單個(gè)事務(wù)發(fā)送給server。server依據(jù) rows_per_batch 優(yōu)化大容量裝載。
默認(rèn)情況下。ROWS_PER_BATCH 未知。
ROWTERMINATOR [ = 'row_terminator' ]
指定對(duì)于 char 和 widechar 數(shù)據(jù)文件要使用的行終止符。
默認(rèn)值是 /n(換行符)。
TABLOCK
指定對(duì)于大容量復(fù)制操作期間獲取一個(gè)表級(jí)鎖。假設(shè)表沒(méi)有索引而且指定了 TABLOCK。則該表能夠同一時(shí)候由多個(gè)client裝載。默認(rèn)情況下。鎖定行為是由表選項(xiàng) table lock on bulk load 決定的。
僅僅在大容量復(fù)制操作期間控制鎖會(huì)降低表上的鎖爭(zhēng)奪,極大地提高性能。凝視BULK INSERT 語(yǔ)句能在用戶定義事務(wù)中運(yùn)行。
對(duì)于一個(gè)用 BULK INSERT 語(yǔ)句和 BATCHSIZE 子句將數(shù)據(jù)裝載到使用多個(gè)批處理的表或視圖中的用戶定義事務(wù)來(lái)說(shuō),回滾它將回滾全部發(fā)送給 SQL Server 的批處理。
權(quán)限僅僅有 sysadmin 和 bulkadmin 固定server角色成員才干運(yùn)行 BULK INSERT。
演示樣例本例從指定的數(shù)據(jù)文件里導(dǎo)入訂單具體信息,該文件使用豎杠 (|) 字符作為字段終止符,使用 |/n 作為行終止符。
Sql代碼
BULKINSERTNorthwind.dbo.[OrderDetails]FROM'f:/orders/lineitem.tbl'
WITH(
FIELDTERMINATOR='|',
ROWTERMINATOR='|/n'
)
BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl'
WITH (
FIELDTERMINATOR = '|',
ROWTERMINATOR = '|/n'
)
本例指定 FIRE_TRIGGERS 參數(shù)。
Sql代碼
BULKINSERTNorthwind.dbo.[OrderDetails]FROM'f:/orders/lineitem.tbl'
WITH(
FIELDTERMINATOR='|',
ROWTERMINATOR=':/n',
FIRE_TRIGGERS
)
=============================================================
BULKINSERT
[database_name.[schema_name].|schema_name.][table_name|view_name]
FROM'data_file'
[WITH
(
[[,]BATCHSIZE=batch_size]--BATCHSIZE指令來(lái)設(shè)置在單個(gè)事務(wù)中能夠插入到表中的記錄的數(shù)量
[[,]CHECK_CONSTRAINTS]--指定在大容量導(dǎo)入操作期間,必須檢查全部對(duì)目標(biāo)表或視圖的約束。若沒(méi)有CHECK_CONSTRAINTS選項(xiàng)。則全部CHECK和FOREIGNKEY約束都將被忽略。而且在此操作之后表的約束將標(biāo)記為不可信。
[[,]CODEPAGE={'ACP'|'OEM'|'RAW'|'code_page'}]--指定該數(shù)據(jù)文件里數(shù)據(jù)的代碼頁(yè)
[[,]DATAFILETYPE=
{'char'|'native'|'widechar'|'widenative'}]--指定BULKINSERT使用指定的數(shù)據(jù)文件類型值運(yùn)行導(dǎo)入操作。
[[,]FIELDTERMINATOR='field_terminator']--標(biāo)識(shí)分隔內(nèi)容的符號(hào)
[[,]FIRSTROW=first_row]--指定要載入的第一行的行號(hào)。
默認(rèn)值是指定數(shù)據(jù)文件里的第一行
[[,]FIRE_TRIGGERS]--是否啟動(dòng)觸發(fā)器
[[,]FORMATFILE='format_file_path']
[[,]KEEPIDENTITY]--指定導(dǎo)入數(shù)據(jù)文件里的標(biāo)識(shí)值用于標(biāo)識(shí)列
[[,]KEEPNULLS]--指定在大容量導(dǎo)入操作期間空列應(yīng)保留一個(gè)空值。而不插入用于列的不論什么默認(rèn)值
[[,]KILOBYTES_PER_BATCH=kilobytes_per_batch]
[[,]LASTROW=last_row]--指定要載入的最后一行的行號(hào)
[[,]MAXERRORS=max_errors]--指定同意在數(shù)據(jù)中出現(xiàn)的最多語(yǔ)法錯(cuò)誤數(shù),超過(guò)該數(shù)量后將取消大容量導(dǎo)入操作。
[[,]ORDER({column[ASC|DESC]}[,...n])]--指定數(shù)據(jù)文件里的數(shù)據(jù)怎樣排序
[[,]ROWS_PER_BATCH=rows_per_batch]
[[,]ROWTERMINATOR='row_terminator']--標(biāo)識(shí)分隔行的符號(hào)
[[,]TABLOCK]--指定為大容量導(dǎo)入操作持續(xù)時(shí)間獲取一個(gè)表級(jí)鎖
[[,]ERRORFILE='file_name']--指定用于收集格式有誤且不能轉(zhuǎn)換為OLEDB行集的行的文件。
)]
BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl'
WITH (
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':/n',
FIRE_TRIGGERS
)
=============================================================
BULK INSERT
[ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
(
[ [ , ] BATCHSIZE = batch_size ] --BATCHSIZE指令來(lái)設(shè)置在單個(gè)事務(wù)中能夠插入到表中的記錄的數(shù)量
[ [ , ] CHECK_CONSTRAINTS ] --指定在大容量導(dǎo)入操作期間。必須檢查全部對(duì)目標(biāo)表或視圖的約束。若沒(méi)有 CHECK_CONSTRAINTS 選項(xiàng)。則全部 CHECK 和 FOREIGN KEY 約束都將被忽略。而且在此操作之后表的約束將標(biāo)記為不可信。
[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] --指定該數(shù)據(jù)文件里數(shù)據(jù)的代碼頁(yè)
[ [ , ] DATAFILETYPE =
{ 'char' | 'native'| 'widechar' | 'widenative' } ] --指定 BULK INSERT 使用指定的數(shù)據(jù)文件類型值運(yùn)行導(dǎo)入操作。
[ [ , ] FIELDTERMINATOR = 'field_terminator' ] --標(biāo)識(shí)分隔內(nèi)容的符號(hào)
[ [ , ] FIRSTROW = first_row ] --指定要載入的第一行的行號(hào)。默認(rèn)值是指定數(shù)據(jù)文件里的第一行
[ [ , ] FIRE_TRIGGERS ] --是否啟動(dòng)觸發(fā)器
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] KEEPIDENTITY ] --指定導(dǎo)入數(shù)據(jù)文件里的標(biāo)識(shí)值用于標(biāo)識(shí)列
[ [ , ] KEEPNULLS ] --指定在大容量導(dǎo)入操作期間空列應(yīng)保留一個(gè)空值。而不插入用于列的不論什么默認(rèn)值
[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
[ [ , ] LASTROW = last_row ] --指定要載入的最后一行的行號(hào)
[ [ , ] MAXERRORS = max_errors ] --指定同意在數(shù)據(jù)中出現(xiàn)的最多語(yǔ)法錯(cuò)誤數(shù),超過(guò)該數(shù)量后將取消大容量導(dǎo)入操作。
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] --指定數(shù)據(jù)文件里的數(shù)據(jù)怎樣排序
[ [ , ] ROWS_PER_BATCH = rows_per_batch ]
[ [ , ] ROWTERMINATOR = 'row_terminator' ] --標(biāo)識(shí)分隔行的符號(hào)
[ [ , ] TABLOCK ] --指定為大容量導(dǎo)入操作持續(xù)時(shí)間獲取一個(gè)表級(jí)鎖
[ [ , ] ERRORFILE = 'file_name' ] --指定用于收集格式有誤且不能轉(zhuǎn)換為 OLE DB 行集的行的文件。
)]
以下寫(xiě)個(gè)個(gè)簡(jiǎn)單的應(yīng)用樣例
Sql代碼
bulkinsertxsxt.dbo.tabletestfrom'c:/data.txt'
with(
FIELDTERMINATOR=',',
ROWTERMINATOR='/n'
)
總結(jié)
以上是生活随笔為你收集整理的Bulk Insert具体订单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿尔法・罗密欧全新超跑预告图公布,最快
- 下一篇: 一加中国总裁称11的屏幕是“行业最流畅”