<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    BULK INSERT用法詳解,文本導入SQL,字段數量不等實例.

    BULK INSERT用法詳解,文本導入SQL,字段數量不等實例.

    分類: 導入導出專題 精華答題收集 批量處理相關
    2009-09-13 17:01 6188人閱讀 評論(2) 收藏 舉報

    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'

    )

    posted on 2013-01-17 10:34 ** 閱讀(619) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 有码人妻在线免费看片| 最新国产精品亚洲| 免费国产小视频在线观看| 亚洲免费观看网站| 97热久久免费频精品99| 亚洲无线一二三四区| 在线视频精品免费| 亚洲爆乳无码精品AAA片蜜桃| 在线观看成人免费视频| 亚洲色自偷自拍另类小说| 亚洲中文字幕乱码一区| 国产无遮挡裸体免费视频在线观看 | 亚洲国产成人一区二区三区| 久久青草国产免费观看| 亚洲精品美女久久久久9999| 丁香花免费高清视频完整版| 亚洲gv白嫩小受在线观看| 亚洲AV无码成人网站在线观看| 永久免费无码网站在线观看| 九九久久国产精品免费热6| 亚洲色欲久久久综合网| 日本人的色道免费网站| 亚洲成AV人片高潮喷水| 亚洲一区二区三区香蕉| 免费h片在线观看网址最新| 亚洲乱码av中文一区二区| 少妇亚洲免费精品| 亚洲无人区码一二三码区别图片| 成年女人18级毛片毛片免费 | 色拍自拍亚洲综合图区| 国产精品永久免费| 亚洲视频2020| 国产精品网站在线观看免费传媒| 亚洲视频在线观看网址| 日韩高清在线免费观看| 三年片免费高清版| 亚洲第一成人在线| 亚洲区小说区图片区QVOD| 青青视频观看免费99| 一级毛片大全免费播放下载 | 精品日韩亚洲AV无码|