gpt4 book ai didi

c# - SQL Server 选择和插入问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:36:24 24 4
gpt4 key购买 nike

我在同一个数据库服务器上有两个数据库,分别是 DB1 和 DB2。我在 DB2 中有 Table1,在 DB2 中有 Table2。目前,我正在使用 insert into select * 将 Table2 中的所有数据传输到 Table1(Table1 为空,我的目的是将 Table2 中的数据复制到 Table1)。表结构为聚簇 ID 列(GUID 类型)和 XML 二进制(varbinary)数据列。

我目前的问题是,内存消耗非常高。有什么减少内存消耗的好主意吗?我的粗略想法是我可以初始化几个小事务并从每个事务中选择插入部分数据。

我正在使用 VSTS 2008 + C# + ADO.Net + SQL Server 2008 Enterprise。有什么好的方案或者引用样例吗?

这是我当前导致内存不足异常的代码。我正在使用 ADO.Net SQLBulkCopy 功能。

namespace BulkCopyTable
{
public class CopyData
{
string _sourceConnectionString;
string _destinationConnectionString;

public CopyData(string sourceConnectionString,
string destinationConnectionString)
{
_sourceConnectionString =
sourceConnectionString;
_destinationConnectionString =
destinationConnectionString;
}

public void CopyTable(string table)
{
using (SqlConnection source =
new SqlConnection(_sourceConnectionString))
{
string sql = string.Format("SELECT * FROM [{0}]", table);

SqlCommand command = new SqlCommand(sql, source);

source.Open();
IDataReader dr = command.ExecuteReader();

using (SqlBulkCopy copy =
new SqlBulkCopy(_destinationConnectionString))
{
copy.DestinationTableName = table;
copy.WriteToServer(dr);
}
}
}
}

class Program
{
static void Main(string[] args)
{
CopyData copier = new CopyData(ConfigurationSettings.AppSettings["source"], ConfigurationSettings.AppSettings["destination"]);
Console.WriteLine("Begin Copy");
copier.CopyTable(ConfigurationSettings.AppSettings["Table"]);
Console.WriteLine("End Copy");
return;
}
}
}

最佳答案

您可以尝试使用 BCP效用。

如果需要,这可以使用 Process 类在 C# 中运行。

关于c# - SQL Server 选择和插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1344716/

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