gpt4 book ai didi

c# - sqlbulkcopy 只读取 255 个字符

转载 作者:行者123 更新时间:2023-11-30 18:30:46 26 4
gpt4 key购买 nike

我正在使用 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

最佳答案

作为rmoore在这说answer ,

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

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

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

关于c# - sqlbulkcopy 只读取 255 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21130542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com