簡體   English   中英

如果Excel批量復制上傳中的Excel工作表列值為null,則綁定默認值

[英]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以外的值。

我可以看到一些選擇。

  • 可以通過將值設置為默認值來處理.NET端(如果需要幫助,則必須顯示.NET代碼)
  • 對具有值的行進行批量處理,對不具有該值的行進行批量處理,並刪除該列的映射,則默認約束將起作用
  • 將行重新設置為允許NULLS,按您的方式進行批量操作,然后在批量操作之后進行更新以將NULLS設置為默認值。

我知道BULK INSERTBCP都有一個限定符,如此處所示用於處理NULL值。 .NET SqlBulkCopy選項中提供了相同的選項。

是另一個與您的問題有關的問題。

請記住,數據庫架構應有助於您強制執行業務規則並保持數據清潔。 如果日期永遠不能為NULL,則將該列保留為NOT NULL並相應地執行解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM