我可以使用一些建议/想法。 我编写了一个控制台应用程序,它将MS Access中的表中的所有数据(我知道,但我继承了它)查询到SQL表。它每天早上作为预定任务运行。两个表之间的字段不相同。目前,我从MS Access表中选择所有数据,遍历数据集并将每一行插入SQL表。我还在这个过程中写了一个快速的日志文件。它有效,但速度不快。我很感激您可能需要改进的过程。 谢谢!
答案 0 :(得分:4)
方式比单个insert
语句更快。
您必须为主键增加自己的标识字段值。要做到这一点,首先抓住你离开的最后一个身份字段值:
select top 1 id_customer
from customers
order by id_customer desc
然后在循环浏览int
时增加DataSet
变量。
或者您可以改为使用GUID for primary key column。
使用SqlBulkCopy的示例代码:
public static void BulkLoadDataTable(DataTable table, string destinationTable)
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(_connectionString))
{
bulkCopy.BulkCopyTimeout = 1200;
bulkCopy.DestinationTableName = destinationTable;
bulkCopy.WriteToServer(table);
}
}
强类型DataTable:
using System;
using System.Data;
public class CustomersDataTable : DataTable
{
public CustomersDataTable() : base()
{
base.TableName = "Customers";
Columns.Add(new DataColumn("id_customer", typeof(int)));
Columns.Add(new DataColumn("first_name", typeof(string)));
Columns.Add(new DataColumn("last_name", typeof(string)));
Columns.Add(new DataColumn("active", typeof(bool)));
}
}
答案 1 :(得分:1)
你看过SSIS包吗?我先调查一下。如果您无权访问它,那么请查看此处提到的SqlBulkCopy类。
您还可以考虑使用SELECT statement with an INSERT。