【发布时间】:2024-01-15 05:11:01
【问题描述】:
昨天我学习了如何使用 ADO.NET 获取一个 DataTable 并将所有记录批量插入到 SQL Server 数据库中。这对我项目的一部分很有用。现在我需要做的是从 DataTable 中获取记录并仅插入 SQL 服务器中不存在的记录。我使用的是 VB2010,代码看起来像:
'get the data from our Teradata server and fill up a DataTable
Dim dtCheck As New DataTable("TableCheck")
dtCheck = GetDataTableFromTeradataServer
'connect to our SQL server
Dim connSqlSvr As New System.Data.SqlClient.SqlConnection
connSqlSvr.ConnectionString = "Data Source=DestSqlServer;Initial Catalog=DestDb;Connect Timeout=15"
connSqlSvr.Open()
'how do I take records from the DataTable and insert only those records that do not
'already exist in the SQL server?
'close and dispose the SQL server database connection
connSqlSvr.Close()
connSqlSvr.Dispose()
SQL 服务器目标表 [DestDb].[dbo].[Events] 有字段
[CityCode],[CarNum],[VIN],[Fleet],[CarMileage],[EventItm],[EventDate]
并且内存中的DataTable有字段
City,CarNo,VIN,Fleet,Mileage,EventDesc,EventDate
就我而言,唯一记录由 [CityCode]、[CarNum]、[VIN]、[EventItm] 和 [EventDate] 组成
通常我会每天运行一次这个例程,并且会从源中取回大约 200 条记录。一直在寻找几个小时,但不知道如何解决这个问题。
【问题讨论】:
-
您的问题有一个很好的解决方案[这里][1] [1]:*.com/questions/16460397/…
-
谢谢。我最终使用了 INSERT INTO SELECT FROM WHERE HAVING 方法,详见此处*.com/questions/913841/mysql-conditional-insert。我循环浏览了每条记录,如此处所述*.com/questions/26940195/…
标签: sql-server datatable ado.net unique sql-insert