【发布时间】:2011-01-31 00:40:00
【问题描述】:
在我的程序中,我正在填充一个数据表,然后将其批量复制到我的数据库中。
但是,如果行中的 3 列匹配,我希望它覆盖数据库中的一行。
例如,如果我有 5 列
会员编号 注册日期 姓名 地址 城市 状态
因此,如果成员编号、注册日期和名称匹配,我想覆盖该行。 使用批量插入的数据。在我的程序中,整个数据库表都没有填充,我认为加载它太大了。
Using bcp As SqlBulkCopy = New SqlBulkCopy(SqlDataSource2.ConnectionString)
bcp.DestinationTableName = "dbo.dashboardtasks"
bcp.WriteToServer(table)
如果最好的方法是用我的数据库表创建一个数据表,我将如何比较行,然后覆盖特定 3 列中匹配的表。然后仅使用已更改的行或新行来更新数据库
INSERT INTO [dashboardtasks] ([tour], [taskname], [deptdate], [tasktype], [desc], [duedate], [compdate], [comments], [agent], [compby], [graceperiod], [id])
【问题讨论】:
-
如何找到匹配项?是否有 ID 字段或自然键?因为否则这是没有意义的。如果你有一个 ID 字段,它不会总是覆盖吗?如果没有 ID 或键,那么外部文件中的多行不能匹配并覆盖多个现有行吗?
-
有一个主键,但在我生成的数据表中没有
-
我的主键是自动递增的,我认为这就是它允许它重复的原因
标签: sql vb.net sql-server-2005