【问题标题】:sqlbulkcopy reads only 255 characterssqlbulkcopy 只读取 255 个字符
【发布时间】:2014-01-15 06:32:16
【问题描述】:

我正在使用 sqlbulkcopy 类读取表格中的 excel

 string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + targetFileName + ";Extended Properties=Excel 12.0;";
    //OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + targetFileName + @";Extended Properties=""Excel 8.0;IMEX=1;ImportMixedTypes=Text;HDR=YES;""");
    OleDbConnection con = new OleDbConnection(connStr);
    OleDbCommand myCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", con);


    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(System.Configuration.ConfigurationManager.ConnectionStrings["CrossMediaConnectionString"].ToString()))
        try
        {
            {
                #region SqlBulkCopy
                bulkCopy.DestinationTableName = "tbl_TempProductData";

                bulkCopy.ColumnMappings.Add("product_code", "ProductCode");
                bulkCopy.ColumnMappings.Add("product_name", "ProductName");
                bulkCopy.ColumnMappings.Add("category_relation_id", "RelatedCategoryId");
                bulkCopy.ColumnMappings.Add("short_description", "ProductDescription");



       con.Open();

               bulkCopy.WriteToServer(myCommand.ExecuteReader());

    }
}

但 ProductDescription 仅读取 255 个字符,即使对于表 tbl_TempProductData 我已将长度设置为最大值

【问题讨论】:

标签: c#


【解决方案1】:

正如rmoore在这个answer中所说,

Excel 的 OLEDB 提供程序将尝试根据前 8 行数据自动确定数据类型,这可以使用连接字符串中的 HDR=Yes/No 属性进行设置。此外,还有多种类型可以应用于文本列。备忘录类型包含超过 255 个字符,因此如果前 8 行都没有,那么它将错误地设置数据类型。

更改此设置的方法是更改​​名为 TypeGuessRows 的注册表设置,如下所述:Microsoft Support

注意:TypeGuessRows 键值的有效范围是 0 到 16。但是,如果值为 0,则扫描的源行数为 16384。因此,如果您有一个非常大的文件,请确保最大的行数是首先。

【讨论】:

    【解决方案2】:

    这是我的连接字符串。 我认为扩展属性可能会对您有所帮助..

    var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"", fileName);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      相关资源
      最近更新 更多