我创建了mvc 4应用程序,它可以使用sql批量复制上载方法将数据上传到数据库。
一旦选择excel文件,就可以将数据上传到系统中。
这很好,现在如果excel字段为null,我想添加默认值。
这就是它如何提取excels列值的方法。
"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批量复制上载方法忽略了添加默认值数据库。
如何从控制器方法中添加默认值
发布于 2015-06-15 10:10:58
您的问题必须是列允许NULLS。
如果您的列允许NULL,并且在insert上提供一个NULL值,则将插入空。如果没有为该列提供值,则将考虑默认值。
将列设置为NULL。
ALTER TABLE [dbo].[tbl_HEI_student] ALTER COLUMN [Date_of_Birth] DATE NOT NULL
这是默认定义。
编辑:
正如您已经注意到的,您不能对该列进行BulkInsert操作,并使默认值在SqlServer端占上风,而我建议的NULL将强制执行不提供值或除NULL以外的其他值。
我能看到一些选择。
我知道散装插入和BCP都有一个限定符,如这里所示,用于处理空值。在.NET SqlBulkCopy选项中也可以使用相同的选项。
这里是与您的问题相关的另一个问题。
请记住,数据库架构应该帮助您执行业务规则,并保持数据的清洁。如果日期不应该为空,则将列保持为NULL,并相应地执行解决方案。
https://stackoverflow.com/questions/30842321
复制相似问题