c# - 使用 FileHelpers 时,如何在 SQL Server 中将 CSV 空字符串加载为 NULL?
问题描述
我正在使用 FileHelpers 读取 CSV 以加载 SQL Server 表。
CSV 看起来像这样:
ID, SOMESTRING
"10","Blah blah"
"11",""
"12","More blah blah"
我的记录映射类看起来像这样:
[IgnoreFirst, DelimitedRecord(",")]
class Mytable
{
[FieldQuoted]
public ulong Id;
[FieldQuoted]
[FieldNullValue(typeof(string), null)]
public string SomeString;
}
最后,批量复制到数据库的代码是:
SqlBulkCopy bc = new SqlBulkCopy(mySqlConnection);
bc.DestinationTableName = "dbo.MYTABLE";
bc.WriteToServer(new FileHelperEngine<Mytable>().ReadFile(baseDir + "\\" + "MYTABLE.CSV").ToDataTable<Mytable>());
最初,我没有包含 FieldNullValue 属性,但是否包含它似乎并不重要。在这两种情况下,第 11 行在 SQL Server 中导入为空字符串。我希望它为 NULL。这可以做到吗?
解决方案
使用 FileHelpers 空字符串将被解析为String.Empty
,但您可以使用自定义转换器覆盖它:
public class EmptyStringConverter : ConverterBase
{
public override object StringToField(string sourceString)
{
if (String.IsNullOrWhiteSpace(sourceString))
return null;
return sourceString;
}
}
然后你像这样定义你的记录类属性
[FieldConverter(typeof(EmptyStringConverter))]
public string SomeString;
如果对应的字符串SomeString
为空或空白,则将其转换为null。
推荐阅读
- git - 如何计算 Git 存储库中按特定作者分组的一年中更改的总行数?
- jquery - 为什么我的 Fullcalendar clientEvent 在由 jquery click 事件触发时只触发一次
- c# - 如何在 c# 驱动程序中为 mongo 集合中的所有文本字段创建全文搜索?
- c++ - 计算item相似度矩阵遇到的问题
- angular - 错误:无法绑定到“建议”,因为它不是“p-autoComplete”PRIMENG 的已知属性
- c# - 在 c# System.AccessViolationException 处导出 c++ 函数和使用函数
- dictionary - 在地图上创建气泡
- scala - Skuber 中的 Pod 关联性
- python - 如何使用python找到一个单词在句子中的位置?
- python - 如何使用 VTK 和 Python 在时间步中生成字段的快照