濮阳杆衣贸易有限公司

主頁 > 知識庫 > sql server Bulk Insert命令詳細

sql server Bulk Insert命令詳細

熱門標簽:電銷機器人被曝光 如何在地圖標注自己店鋪 真人語音電銷機器人 400外呼系統(tǒng)合法 怎樣把地圖標注導(dǎo)入公司地址 廣州人工電銷機器人費用 地圖標注一個圓圈怎么用 洛陽外呼系統(tǒng)平臺 寧波人工外呼系統(tǒng)有效果嗎

BULK INSERT以用戶指定的格式復(fù)制一個數(shù)據(jù)文件至數(shù)據(jù)庫表或視圖中。
語法:

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ù)庫的名稱。如果未指定,則系統(tǒng)默認為當前數(shù)據(jù)庫。

'owner'
是表或視圖所有者的名稱。當執(zhí)行大容量復(fù)制操作的用戶擁有指定的表或視圖時,owner 是可選項。如果沒有指定 owner 并且執(zhí)行大容量復(fù)制操作的用戶不擁有指定的表或視圖,則 Microsoft® SQL Server? 將返回錯誤信息并取消大容量復(fù)制操作。

'table_name'
是大容量復(fù)制數(shù)據(jù)于其中的表或視圖的名稱。只能使用那些所有的列引用相同基表所在的視圖。有關(guān)向視圖中復(fù)制數(shù)據(jù)的限制的更多信息,請參見 INSERT。

'data_file'
是數(shù)據(jù)文件的完整路徑,該數(shù)據(jù)文件包含要復(fù)制到指定表或視圖的數(shù)據(jù)。BULK INSERT 從磁盤復(fù)制數(shù)據(jù)(包括網(wǎng)絡(luò)、軟盤、硬盤等)。 data_file 必須從運行 SQL Server 的服務(wù)器指定有效路徑。如果 data_file 是遠程文件,則請指定通用命名規(guī)則 (UNC) 名稱。

BATCHSIZE [ = batch_size ]
指定批處理中的行數(shù)。每個批處理作為一個事務(wù)復(fù)制至服務(wù)器。SQL Server提交或回滾(在失敗時)每個批處理的事務(wù)。默認情況下,指定數(shù)據(jù)文件中的所有數(shù)據(jù)是一個批處理。

CHECK_CONSTRAINTS
指定在大容量復(fù)制操作中檢查 table_name 的任何約束。默認情況下,將會忽略約束。

CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ]
指定該數(shù)據(jù)文件中數(shù)據(jù)的代碼頁。僅當數(shù)據(jù)含有字符值大于 127 或小于 32 的 char、varchar 或 text 列時,CODEPAGE 才是適用的。CODEPAGE 值 描述 ACP char、varchar 或 text 數(shù)據(jù)類型的列從 ANSI/Microsoft Windows® 代碼頁 ISO 1252 轉(zhuǎn)換為 SQL Server 代碼頁。 OEM(默認值) char、varchar 或 text 數(shù)據(jù)類型的列被從系統(tǒng) OEM 代碼頁轉(zhuǎn)換為 SQL Server 代碼頁。 RAW 并不進行從一個代碼頁到另一個代碼頁的轉(zhuǎn)換;這是最快的選項。 code_page 特定的代碼頁號碼,例如 850。

DATAFILETYPE [ = {'char' | 'native' | 'widechar' | 'widenative' } ]
指定 BULK INSERT 使用指定的默認值執(zhí)行復(fù)制操作。DATAFILETYPE 值 描述 char(默認值) 從含有字符數(shù)據(jù)的數(shù)據(jù)文件執(zhí)行大容量復(fù)制操作。 native 使用 native(數(shù)據(jù)庫)數(shù)據(jù)類型執(zhí)行大容量復(fù)制操作。要裝載的數(shù)據(jù)文件由大容量復(fù)制數(shù)據(jù)創(chuàng)建,該復(fù)制是用 bcp 實用工具從 SQL Server 進行的。 widechar 從含有 Unicode 字符的數(shù)據(jù)文件中執(zhí)行大容量復(fù)制操作。 widenative 執(zhí)行與 native 相同的大容量復(fù)制操作,不同之處是 char、varchar 和 text 列在數(shù)據(jù)文件中存儲為 Unicode。要裝載的數(shù)據(jù)文件由大容量復(fù)制數(shù)據(jù)創(chuàng)建,該復(fù)制是用 bcp 實用工具從 SQL Server 進行的。該選項是對 widechar 選項的一個更高性能的替代,并且它用于使用數(shù)據(jù)文件從一個運行 SQL Server 的計算機向另一個計算機傳送數(shù)據(jù)。當傳送含有 ANSI 擴展字符的數(shù)據(jù)時,使用該選項以便利用 native 模式的性能。

FIELDTERMINATOR [ = 'field_terminator' ]
指定用于 char 和 widechar 數(shù)據(jù)文件的字段終止符。默認的字段終止符是 /t(制表符)。

FIRSTROW [ = first_row ]
指定要復(fù)制的第一行的行號。默認值是 1,表示在指定數(shù)據(jù)文件的第一行。

FIRE_TRIGGERS
指定目的表中定義的任何插入觸發(fā)器將在大容量復(fù)制操作過程中執(zhí)行。如果沒有指定 FIRE_TRIGGERS,將不執(zhí)行任何插入觸發(fā)器。

FORMATFILE [ = 'format_file_path' ]
指定一個格式文件的完整路徑。格式文件描述了含有存儲響應(yīng)的數(shù)據(jù)文件,這些存儲響應(yīng)是使用 bcp 實用工具在相同的表或視圖中創(chuàng)建的。格式文件應(yīng)該用于以下情況: 數(shù)據(jù)文件含有比表或視圖更多或更少的列。列使用不同的順序。列分割符發(fā)生變化。數(shù)據(jù)格式有其它的改變。通常,格式文件通過 bcp 實用工具創(chuàng)建并且根據(jù)需要用文本編輯器修改。有關(guān)更多信息,請參見 bcp 實用工具。

KEEPIDENTITY
指定標識列的值存在于導(dǎo)入文件中。如果沒有指定 KEEPIDENTITY,在導(dǎo)入的數(shù)據(jù)文件中此列的標識值將被忽略,并且 SQL Server 將根據(jù)表創(chuàng)建時指定的種子值和增量值自動賦給一個唯一的值。假如數(shù)據(jù)文件不含該表或視圖中的標識列,使用一個格式文件來指定在導(dǎo)入數(shù)據(jù)時,表或視圖中的標識列應(yīng)被忽略;SQL Server 自動為此列賦予唯一的值。有關(guān)詳細信息,請參見 DBCC CHECKIDENT。

KEEPNULLS
指定在大容量復(fù)制操作中空列應(yīng)保留一個空值,而不是對插入的列賦予默認值。

KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]
指定每個批處理中數(shù)據(jù)的近似千字節(jié)數(shù)(KB)。默認情況下,KILOBYTES_PER_BATCH 未知。

LASTROW [ = last_row ]
指定要復(fù)制的最后一行的行號。默認值是 0,表示指定數(shù)據(jù)文件中的最后一行。

MAXERRORS [ = max_errors ]
指定在大容量復(fù)制操作取消之前可能產(chǎn)生的錯誤的最大數(shù)目。不能被大容量復(fù)制操作導(dǎo)入的每一行將被忽略并且被計為一次錯誤。如果沒有指定 max_errors,默認值為 0。

ORDER ( { column [ ASC | DESC ] } [ ,...n ] )
指定數(shù)據(jù)文件中的數(shù)據(jù)如何排序。如果裝載的數(shù)據(jù)根據(jù)表中的聚集索引進行排序,則可以提高大容量復(fù)制操作的性能。如果數(shù)據(jù)文件基于不同的順序排序,或表中沒有聚集索引,ORDER 子句將被忽略。給出的列名必須是目的表中有效的列。默認情況下,大容量插入操作假設(shè)數(shù)據(jù)文件未排序。n是表示可以指定多列的占位符。

ROWS_PER_BATCH [ = rows_per_batch ]
指定每一批處理數(shù)據(jù)的行數(shù)(即 rows_per_bacth)。當沒有指定 BATCHSIZE 時使用,導(dǎo)致整個數(shù)據(jù)文件作為單個事務(wù)發(fā)送給服務(wù)器。服務(wù)器根據(jù) rows_per_batch 優(yōu)化大容量裝載。默認情況下,ROWS_PER_BATCH 未知。

ROWTERMINATOR [ = 'row_terminator' ]
指定對于 char 和 widechar 數(shù)據(jù)文件要使用的行終止符。默認值是 /n(換行符)。

TABLOCK
指定對于大容量復(fù)制操作期間獲取一個表級鎖。如果表沒有索引并且指定了 TABLOCK,則該表可以同時由多個客戶端裝載。默認情況下,鎖定行為是由表選項 table lock on bulk load 決定的。只在大容量復(fù)制操作期間控制鎖會減少表上的鎖爭奪,極大地提高性能。注釋BULK INSERT 語句能在用戶定義事務(wù)中執(zhí)行。對于一個用 BULK INSERT 語句和 BATCHSIZE 子句將數(shù)據(jù)裝載到使用多個批處理的表或視圖中的用戶定義事務(wù)來說,回滾它將回滾所有發(fā)送給 SQL Server 的批處理。權(quán)限只有 sysadmin 和 bulkadmin 固定服務(wù)器角色成員才能執(zhí)行 BULK INSERT。

示例本例從指定的數(shù)據(jù)文件中導(dǎo)入訂單詳細信息,該文件使用豎杠 (|) 字符作為字段終止符,使用 |/n 作為行終止符。

BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl' 
WITH (
  FIELDTERMINATOR = '|',   
  ROWTERMINATOR = '|/n'  
)

本例指定 FIRE_TRIGGERS 參數(shù)。

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指令來設(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 行集的行的文件。 
  )] 

下面寫個個簡單的應(yīng)用例子

bulk insert xsxt.dbo.tabletest from 'c:/data.txt' 
 with( 
 FIELDTERMINATOR=',', 
 ROWTERMINATOR='/n' 
)
您可能感興趣的文章:
  • mssql server 存儲過程里,bulk insert table from ''路徑+文件'',路徑固定,文件名不固定的實現(xiàn)方法
  • SQL Server Bulk Insert 只需要部分字段時的方法
  • 使用BULK INSERT大批量導(dǎo)入數(shù)據(jù) SQLSERVER

標簽:煙臺 晉中 北海 珠海 咸寧 南昌 石家莊 東營

巨人網(wǎng)絡(luò)通訊聲明:本文標題《sql server Bulk Insert命令詳細》,本文關(guān)鍵詞  sql,server,Bulk,Insert,命令,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql server Bulk Insert命令詳細》相關(guān)的同類信息!
  • 本頁收集關(guān)于sql server Bulk Insert命令詳細的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    衡阳市| 洪泽县| 广灵县| 周宁县| 上高县| 邓州市| 犍为县| 光泽县| 鞍山市| 康马县| 金寨县| 丰宁| 西丰县| 旺苍县| 博客| 武平县| 永川市| 麻阳| 阳谷县| 保康县| 揭西县| 新龙县| 易门县| 安多县| 简阳市| 仁寿县| 兴宁市| 监利县| 田东县| 安庆市| 西丰县| 泽普县| 岳阳市| 黄梅县| 繁峙县| 孟村| 太仆寺旗| 阳谷县| 周至县| 商都县| 漯河市|