gpt4 book ai didi

ASP.NET SqlBulkCopy 不会在服务器上插入所有记录

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:14 25 4
gpt4 key购买 nike

我不知道为什么 SqlBulkCopy 不插入读取器的所有记录。代码:

using (OleDbDataReader dr1 = cmd.ExecuteReader())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ss, SqlBulkCopyOptions.TableLock, null))
{
bulkCopy.BulkCopyTimeout = 0;
bulkCopy.BatchSize = 500;
bulkCopy.DestinationTableName = tableName;
try
{
bulkCopy.WriteToServer(dr1);
}
catch (Exception ex)
{
Log.LogSystemLog(ex.ToString());
return false;
}

}

GC.Collect();
dr1.Close();
}

我想批量复制大约 30 万条记录。当我从本地主机运行它到同一个数据库时它工作,但是当我从服务器运行它时 - 它总是插入 ~7k 记录......并且没有错误或异常。服务器上有 4GB 可用 RAM。在本地主机上 ~ 1,5GB。

我不知道为什么它在本地主机上可以正常工作,但在服务器上却不能。

最佳答案

我遇到了同样的问题,通过将以下内容添加到我的连接字符串中解决了。

IMEX=1

示例:

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;"+ “数据源=” + Server.MapPath(rutacom) + “;” + "扩展属性='Excel 12.0 Xml; HDR=YES; IMEX=1'";

在我的本地主机上运行良好,但在服务器上运行不正常。

试一试:)

注意事项:

“HDR=是;”表示第一行包含列名,而不是数据。 “HDR=否;”表示相反。

始终使用 IMEX=1 是一种更安全的检索混合数据列数据的方法。考虑这样一种情况,一个 Excel 文件可能工作正常,因为该文件的数据导致驱动程序猜测一种数据类型,而包含其他数据的另一个文件导致驱动程序猜测另一种数据类型。这可能会导致您的应用崩溃。

关于ASP.NET SqlBulkCopy 不会在服务器上插入所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20521007/

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