【问题标题】:can't add datatable to sqlbulkcopy无法将数据表添加到 sqlbulkcopy
【发布时间】:2014-07-29 20:36:36
【问题描述】:

这是我的代码

public static void InsertToDatabase(DataTable dataTable) {
    using (SqlBulkCopy sbc = new SqlBulkCopy(GetConnectionString())){
        sbc.DestinationTableName = tableName;
        sbc.WriteToServer(dataTable);
    }
}

这是个例外:

来自数据源的String类型的给定值不能转换为指定目标列的nchar类型。

有什么方法可以知道异常属于哪一列?

【问题讨论】:

  • 你是如何创建数据表的?将表列定义为目标表。
  • @Rahul 说来话长,我正在使用 CsvHelper 库从大约 500 个 csv 文件中读取数据并将该数据加载到数据表中。无论如何,这很好,我认为数据表没有任何错误
  • @Rahul 是的,表列与数据表列完全相同。 100% 确定这一点。我知道这一点
  • 好的。在这种情况下,必须存在大小不匹配。我的意思是异常中的特定列的大小无法容纳数据表中数据的大小。你能检查并确认吗?
  • @Rahul 我不知道我是否理解正确,但是数据库表有 39 列,而我的 csv 文件有 38 列。但是剩下的 1 列是可以为空的。你是这个意思吗?

标签: c# sql-server sql-server-2008 datatable sqlbulkcopy


【解决方案1】:

一定有大小不匹配。我的意思是异常中的特定列的大小无法容纳数据表中数据的大小。

我的意思是,如果异常中的列定义为 @DB end 为 nchar(10) 并且您尝试插入 size > 10 chars 的数据,那么您也会遇到此异常。

检查并确保相同。

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2019-05-19
    • 2021-04-15
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多