将数据导入数据库

时间:2012-03-14 13:06:49

标签: c# sql-server vb.net

我需要将文件中的数据导入Microsoft SQL Server数据库。

  • 文件大致结构化(字段数不一致但所有数据都在所有行中都可用)
  • 该文件最多可包含600'000条记录
  • 第一个字段标识记录

导入数据包含使用新值更新数据库中的现有记录,或者如果找不到记录则插入新记录。

实现这一目标的最佳方法是什么?

(逐行读取文件,从我的.NET应用程序执行SELECTUPDATEINSERT并不能真正让我满意,因为这样可以处理大约35条记录每秒,这导致几个小时的处理时间......)

第一个选项可能是在存储过程中组合select和update / insert命令,但这仍然需要很长时间。

有类似MySQL的INSERT ... ON DUPLICATE UPDATE吗?

是否可以将记录列表/数组(多列)传递给存储过程?

如果是,如何实施?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

您应该查看SQL Server BULK INSERT以将文件批量加载到SQL Server中的临时表中。

将数据加载到临时表后,可以使用SQL Server 2008 MERGE语句插入/更新(“upsert”)实际数据表。这正是它旨在解决的情景......

答案 1 :(得分:0)

创建SSIS就是为了做到这一点。 Here就是一个例子。