程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sql server Bulk Insert敕令具體

sql server Bulk Insert敕令具體

編輯:MSSQL

sql server Bulk Insert敕令具體。本站提示廣大學習愛好者:(sql server Bulk Insert敕令具體)文章只能為提供參考,不一定能成為您想要的結果。以下是sql server Bulk Insert敕令具體正文


BULK INSERT以用戶指定的格局復制一個數據文件至數據庫表或視圖中。
語法:

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 ],
)

參數:
'database_name'
是包括指定表或視圖的數據庫的稱號。假如未指定,則體系默許為以後數據庫。

'owner'
是表或視圖一切者的稱號。當履行年夜容量復制操作的用戶具有指定的表或視圖時,owner 是可選項。假如沒有指定 owner 而且履行年夜容量復制操作的用戶不具有指定的表或視圖,則 Microsoft® SQL Server? 將前往毛病信息並撤消年夜容量復制操作。

'table_name'
是年夜容量復制數據於個中的表或視圖的稱號。只能應用那些一切的列援用雷同基表地點的視圖。有關向視圖中復制數據的限制的更多信息,請拜見 INSERT。

'data_file'
是數據文件的完全途徑,該數據文件包括要復制到指定表或視圖的數據。BULK INSERT 從磁盤復制數據(包含收集、軟盤、硬盤等)。 data_file 必需從運轉 SQL Server 的辦事器指定有用途徑。假如 data_file 是長途文件,則請指定通用定名規矩 (UNC) 稱號。

BATCHSIZE [ = batch_size ]
指定批處置中的行數。每一個批處置作為一個事務復制至辦事器。SQL Server提交或回滾(在掉敗時)每一個批處置的事務。默許情形下,指定命據文件中的一切數據是一個批處置。

CHECK_CONSTRAINTS
指定在年夜容量復制操作中檢討 table_name 的任何束縛。默許情形下,將會疏忽束縛。

CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ]
指定該數據文件中數據的代碼頁。僅當數據含有字符值年夜於 127 或小於 32 的 char、varchar 或 text 列時,CODEPAGE 才是實用的。CODEPAGE 值 描寫 ACP char、varchar 或 text 數據類型的列從 ANSI/Microsoft Windows® 代碼頁 ISO 1252 轉換為 SQL Server 代碼頁。 OEM(默許值) char、varchar 或 text 數據類型的列被從體系 OEM 代碼頁轉換為 SQL Server 代碼頁。 RAW 其實不停止從一個代碼頁到另外一個代碼頁的轉換;這是最快的選項。 code_page 特定的代碼頁號碼,例如 850。

DATAFILETYPE [ = {'char' | 'native' | 'widechar' | 'widenative' } ]
指定 BULK INSERT 應用指定的默許值履行復制操作。DATAFILETYPE 值 描寫 char(默許值) 從含有字符數據的數據文件履行年夜容量復制操作。 native 應用 native(數據庫)數據類型履行年夜容量復制操作。要裝載的數據文件由年夜容量復制數據創立,該復制是用 bcp 適用對象從 SQL Server 停止的。 widechar 從含有 Unicode 字符的數據文件中履行年夜容量復制操作。 widenative 履行與 native 雷同的年夜容量復制操作,分歧的地方是 char、varchar 和 text 列在數據文件中存儲為 Unicode。要裝載的數據文件由年夜容量復制數據創立,該復制是用 bcp 適用對象從 SQL Server 停止的。該選項是對 widechar 選項的一個更高機能的替換,而且它用於應用數據文件從一個運轉 SQL Server 的盤算機向另外一個盤算機傳送數據。當傳送含有 ANSI 擴大字符的數據時,應用該選項以方便用 native 形式的機能。

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

FIRSTROW [ = first_row ]
指定要復制的第一行的行號。默許值是 1,表現在指定命據文件的第一行。

FIRE_TRIGGERS
指定目標表中界說的任何拔出觸發器將在年夜容量復制操作進程中履行。假如沒有指定 FIRE_TRIGGERS,將不履行任何拔出觸發器。

FORMATFILE [ = 'format_file_path' ]
指定一個格局文件的完全途徑。格局文件描寫了含有存儲呼應的數據文件,這些存儲呼應是應用 bcp 適用對象在雷同的表或視圖中創立的。格局文件應當用於以下情形: 數據文件含有比表或視圖更多或更少的列。列應用分歧的次序。列朋分符產生變更。數據格局有其它的轉變。平日,格局文件經由過程 bcp 適用對象創立而且依據須要用文本編纂器修正。有關更多信息,請拜見 bcp 適用對象。

KEEPIDENTITY
指定標識列的值存在於導入文件中。假如沒有指定 KEEPIDENTITY,在導入的數據文件中此列的標識值將被疏忽,而且 SQL Server 將依據表創立時指定的種子值和增量值主動賦給一個獨一的值。假設數據文件不含該表或視圖中的標識列,應用一個格局文件來指定在導入數據時,表或視圖中的標識列應被疏忽;SQL Server 主動為此列付與獨一的值。有關具體信息,請拜見 DBCC CHECKIDENT。

KEEPNULLS
指定在年夜容量復制操作中空列應保存一個空值,而不是對拔出的列付與默許值。

KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]
指定每一個批處置中數據的近似千字節數(KB)。默許情形下,KILOBYTES_PER_BATCH 未知。

LASTROW [ = last_row ]
指定要復制的最初一行的行號。默許值是 0,表現指定命據文件中的最初一行。

MAXERRORS [ = max_errors ]
指定在年夜容量復制操作撤消之前能夠發生的毛病的最年夜數量。不克不及被年夜容量復制操作導入的每即將被疏忽而且被計為一次毛病。假如沒有指定 max_errors,默許值為 0。

ORDER ( { column [ ASC | DESC ] } [ ,...n ] )
指定命據文件中的數據若何排序。假如裝載的數據依據表中的集合索引停止排序,則可以進步年夜容量復制操作的機能。假如數據文件基於分歧的次序排序,或表中沒有集合索引,ORDER 子句將被疏忽。給出的列名必需是目標表中有用的列。默許情形下,年夜容量拔出操作假定數據文件未排序。n是表現可以指定多列的占位符。

ROWS_PER_BATCH [ = rows_per_batch ]
指定每批處置數據的行數(即 rows_per_bacth)。當沒有指定 BATCHSIZE 時應用,招致全部數據文件作為單個事務發送給辦事器。辦事器依據 rows_per_batch 優化年夜容量裝載。默許情形下,ROWS_PER_BATCH 未知。

ROWTERMINATOR [ = 'row_terminator' ]
指定關於 char 和 widechar 數據文件要應用的行終止符。默許值是 /n(換行符)。

TABLOCK
指定關於年夜容量復制操作時代獲得一個表級鎖。假如表沒有索引而且指定了 TABLOCK,則該表可以同時由多個客戶端裝載。默許情形下,鎖定行動是由表選項 table lock on bulk load 決議的。只在年夜容量復制操作時代掌握鎖會削減表上的鎖爭取,極年夜地進步機能。正文BULK INSERT 語句能在用戶界說事務中履行。關於一個用 BULK INSERT 語句和 BATCHSIZE 子句將數據裝載到應用多個批處置的表或視圖中的用戶界說事務來講,回滾它將回滾一切發送給 SQL Server 的批處置。權限只要 sysadmin 和 bulkadmin 固定辦事器腳色成員能力履行 BULK INSERT。

示例本例從指定的數據文件中導入定單具體信息,該文件應用豎槓 (|) 字符作為字段終止符,應用 |/n 作為行終止符。

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

本例指定 FIRE_TRIGGERS 參數。

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指令來設置在單個事務中可以拔出到表中的記載的數目 
 [ [ , ] CHECK_CONSTRAINTS ]  --指定在年夜容量導入操作時代,必需檢討一切對目的表或視圖的束縛。若沒有 CHECK_CONSTRAINTS 選項,則一切 CHECK 和 FOREIGN KEY 束縛都將被疏忽,而且在此操作以後表的束縛將標志為弗成信。 
 [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] --指定該數據文件中數據的代碼頁 
 [ [ , ] DATAFILETYPE = 
  { 'char' | 'native'| 'widechar' | 'widenative' } ] --指定 BULK INSERT 應用指定的數據文件類型值履行導入操作。 
 [ [ , ] 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 ]  --指定為年夜容量導入操作連續時光獲得一個表級鎖 
 [ [ , ] ERRORFILE = 'file_name' ] --指定用於搜集格局有誤且不克不及轉換為 OLE DB 行集的行的文件。 
  )] 

上面寫個個簡略的運用例子

bulk insert xsxt.dbo.tabletest from 'c:/data.txt' 
 with( 
 FIELDTERMINATOR=',', 
 ROWTERMINATOR='/n' 
)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved