本文將介紹使用 BULK INSERT 想要插入 NULL 到資料行時,該如何進行。
【情境說明】
在論壇上有朋友討論到使用 BULK INSERT 大量匯入資料時,想要插入 null 到允許 null 的資料行,本文將介紹可能的解決方案。
【重現問題】
首先使用下列 T-SQL 來建立 BULK INSERT 所要大量匯入的資料表。
use tempdb
go
IF OBJECT_ID('dbo.t1') IS NOT NULLDROP TABLE t1GO
CREATE TABLE t1(STORE_NO nvarchar(4) not null,ACCMTH decimal(6,0) not null,UDREF_Q decimal(18,0) null,UDREF_A decimal(18,2) null,UDFORT_Q decimal(18,0) null,UDFORT_A decimal(18,2) nullCONSTRAINT pk1 PRIMARY KEY(STORE_NO,ACCMTH))假設您要匯入的檔案為【c:\temp\txt.txt】,其內容如下:接著您使用下列的 T-SQL 來大量匯入資料,此時將會遇到【Bulk load data conversion error】轉型失敗的錯誤。bulk insert t1 from 'c:\temp\txt.txt'with
(fieldterminator=',',
rowterminator='\n'
)
【解決方式】
只要在文字檔中將要對應插入 NULL 的欄位改以空字串取代,接著再重新使用上述的 T-SQL 來匯入資料即可。由於 BULK INSERT 不支援忽略資料行標頭,若您要匯入的資料只有一列,記得在最後一列下面多加一列空白,否則第一列有資料的部分會被忽略。
【參考資料】