Sql server 中的bulk insert語(yǔ)句使用
2026-05-05 00:49:57
在 SQL Server 中,語(yǔ)用使用 BULK INSERT 語(yǔ)句可以高效地將大量數據插入到表中。句使它允許你一次插入多行數據,語(yǔ)用從而減少與數據庫的句使交互次數,提高性能。語(yǔ)用
在SQL?? Server中,句使BULK INSER??T語(yǔ)句用于將數據從文本文件或CSV文件中導入(ru)到數據庫表中(?_?;),語(yǔ)用它是句使一個(gè)非常強大(da)的工??具,可以處理大(da)量的(de)語(yǔ)用數據插入操作,本文將詳細介紹如何使用BULK INSERT語(yǔ)句,句使以及一些常見(jiàn)的語(yǔ)用使用技巧和注意事項。
BULK INSER??T語(yǔ)句??的句使基本語(yǔ)??法
BULK INSERT語(yǔ)句的基本語(yǔ)法如下:
BU??LK INSERT table_nameFROM 'data_file_path'WITH ( FIELDTERMINATOR = 'field_terminator', --字段分隔符,默認為逗號 ROWTERMINATOR = 'row_terminator',語(yǔ)用 --行分隔符,默認為新行字符 FIRSTROW = first_row,句使 --起始行??號,??默認為1 LASTROW?? = last_row,語(yǔ)用 --結束行號,默認為-1(表示所有行) BATCHSIZE = batch_size, --每次插入的行數,默認為1000 ERRORFILE = 'error_file_path', --錯誤日志文件路徑,默認為空 TABLOCK, --提示服務(wù)器鎖住要插入的表 KILOBYTESヽ(′?`)ノ_PER_BATCH = kilobytes_per_batch(′?_?`), --每批次的字節數,默認為2147483647(2GB) CHECK_CONSTR(╯°□°)╯︵ ┻━┻AINTS, --檢查約束 CODEPAGE = codepage, --代碼頁(yè),默認為不指定 REMOVE_ROWS, --刪除已插入的行 SKIP_NONE, --跳過(guò)沒(méi)有數據的行 REJECT_TAB( ?ヮ?)LE_HINTS, --拒絕表提示?? LOGFILE = 'log_file_path', --日志文件路徑,默認為空 STATISTICS_NORECOMPUTE, --不重新計算統計信息 BATCH_MODE = 'load_mode' --加載模式,默認為'false'(批量模式),'true'(順序模式))
BULK INS??ERT語(yǔ)句的使用示例
1、從CSV文件中導入數據到表中:
BULK INSERT sales.ordersFROM 'C:ordersorders.cs???v'WITH ( FIELDTERMINATOR = ',', ROW??TERMINATOR = '', FIRSTROW = 2, LASTROW = 5000000, BATCHSIZE = 10000,?? ERRORFILE = 'C:orderserrors.??log', TABLOCK, CODEPAGE = 'ACP', REMOVE_ROWS, SKIP_NONE, REJECT_TABLE_HINTS, LOGFILE = 'C:ordersbulkinsert.log', STATISTICS_NORECOMPUTE, BATCH_MODE = 'true')
2、從文本文件中導入數據到表中:
BULK INSERT sales.prod(╯‵□′)╯uctsFROM 'C:produc??tsprod??ucts.txt'WITH ( FIELDTERMINATOR = 't', --字段分隔符為制表符??(Tab) ROWTERMINATOR = '', --行分隔符為換行符(New Line) FIRSTROW = 1, --從第一行開(kāi)始導入數據 LASTROW = 100??0000, --導入100萬(wàn)行數據 BATCHSIZE = 5000, --每次插入5000行數據 ERRORFILE = 'C:p??roductserrors.lo???g', --錯誤日志文件(jian)路徑 TABLOCK, --提示服務(wù)器鎖住要插入的表 CODEPAGE = 'ACP', --代碼ヾ(′?`)?頁(yè)為系統默認值(不指定) REMOVE_ROWS, --刪除已插入的行(不保留源文件中的數據) SKIP_NONE, --跳過(guò)沒(méi)有數據的(′_`)行(不跳過(guò)任何行) REJEC( ?ヮ?)T_TABLE_HINTS, --拒絕表提示(不使用表提示) LOGFILE = 'C:productsbulkinsert.log', --日志文件路徑 STATISTICS_NORECOMPUTE, --(°ロ°) !不重新計算統計信息(不更新統計信息) BATCH_MODE = 'false' --批量模式(一次???插入多行數據))
BULK INSERT語(yǔ)句的注意事項
1、確保源文件的格式與目標表的結構相匹配,否則可能導致插入失敗或數據丟失。
2、如果源文件中存在重復的行,可以使用CHECKSUM選項來(lái)檢測并忽略重復行。CHECKSUM=checksum_colu??mn。
3、如果源文件中存在列名與目標表的列名相同的情況,可以使用FORMATFILE選項來(lái)指定一個(gè)格式文件,以便正確解??析源文件中的列名。FORMATFILE='C:f(′?`*)ormatfile.fmt',格式文件的內容應包含源文件中每個(gè)列的名稱(chēng)和類(lèi)型。1 ID int,數字表示列的順序,字符串表示列名,類(lèi)型表示列的數據類(lèi)型,格式文件的詳細用法請參考官方文檔。
(作者:微信開(kāi)發(fā))
