MyH*_*rts 4 sql vb.net sql-server-2005
在我的程序中,我填充数据表,然后将其批量复制到我的数据库中.
但是,如果行中的3列匹配,我希望它覆盖数据库中的一行.
例如,如果我有5列
membernum dateregistered name address city state
因此,如果membernum,dateregistered和name匹配,我想覆盖该行.使用批量插入的数据.在我的程序中,没有填充整个数据库表,我认为它可以加载它.
Using bcp As SqlBulkCopy = New SqlBulkCopy(SqlDataSource2.ConnectionString)
bcp.DestinationTableName = "dbo.dashboardtasks"
bcp.WriteToServer(table)
Run Code Online (Sandbox Code Playgroud)
如果最好的方法是使用我的数据库表创建数据表,我将如何比较行,然后覆盖特定3列中匹配的表.然后仅使用已更改的行或新行来更新数据库
INSERT INTO [dashboardtasks] ([tour], [taskname], [deptdate], [tasktype], [desc], [duedate], [compdate], [comments], [agent], [compby], [graceperiod], [id])
Run Code Online (Sandbox Code Playgroud)
在Mitch指出批量复制功能(SqlBulkCopy,bcp和BULK INSERT)只处理插入,而不是更新.
解决问题的常用方法是在两个(或更多)步骤中执行批量加载 - 首先使用批量插入将数据加载到临时表中,然后使用查询在主表中插入/更新记录基于登台表中的数据,例如:
INSERT INTO MyTable
(Column1, Column2, [etc...])
SELECT Column1, Column2, [etc...]
FROM Test_Staging
WHERE [Some condition]
Run Code Online (Sandbox Code Playgroud)
请参阅SQL SERVER - 将数据从一个表插入到另一个表中,以获取有关如何从另一个表插入一个表的信息 - 也可以在UPDATE中进行连接,但我很难在此找到一个好的资源.
| 归档时间: |
|
| 查看次数: |
16742 次 |
| 最近记录: |