[英]Bind default value if excel sheet column value null in sql bulk copy upload
我創建了可以使用sql批量復制上載方法將數據上載到數據庫的mvc 4應用程序。
選擇excel文件后,它可以將數據上傳到系統中。
這工作正常,現在我想在excel字段為null的情況下添加默認值
這就是它提取Excel列值的方式
"s1.Gender, " +
"s1.Country_of_Birth, " +
"s1.Date_of_Birth, " +
我想從代碼級別添加默認值,我已經使用數據庫級別來處理了。
例如為“出生日期”添加默認值,我添加了以下約束
ALTER TABLE [dbo].[tbl_HEI_student] ADD CONSTRAINT [DF_tbl_HEI_student_Date_of_Birth] DEFAULT (getdate()) FOR [Date_of_Birth]
但是,當我將excel文件上傳到db時,SQL批量復制上傳方法忽略了添加該默認值數據庫。
如何從控制器方法添加默認值
您的問題必須是該列允許使用NULLS。
如果您的列允許空和你提供的插入內容將插入NULL NULL值。 如果沒有為列提供任何值,則將考慮默認值。
將您的列設置為NOT NULL。
ALTER TABLE [dbo].[tbl_HEI_student] ALTER COLUMN [Date_of_Birth] DATE NOT NULL
這是默認定義 。
編輯:
正如您已經注意到的那樣,您不能將NULLS批量插入該列並使DEFAULT值在SqlServer端占優勢,並且我建議的NOT NULL將強制不提供任何值或提供NULL以外的值。
我可以看到一些選擇。
我知道BULK INSERT和BCP都有一個限定符,如此處所示,用於處理NULL值。 .NET SqlBulkCopy選項中提供了相同的選項。
這是另一個與您的問題有關的問題。
請記住,數據庫架構應有助於您強制執行業務規則並保持數據清潔。 如果日期永遠不能為NULL,則將該列保留為NOT NULL並相應地執行解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.