如何从SQL DB中选择与.NET datatable记录包含相同ID的记录
我正在将一个包含数千行的CSV文件加载到一个.NET数据表中,该表如下所示:如何从SQL DB中选择与.NET datatable记录包含相同ID的记录,.net,sql,datatable,.net,Sql,Datatable,我正在将一个包含数千行的CSV文件加载到一个.NET数据表中,该表如下所示: var numbers = localTable.Rows.Cast<DataRow>() .Select(r => r.Field<string>("SequenceNo")) .ToArray(); var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})"; var que
var numbers = localTable.Rows.Cast<DataRow>()
.Select(r => r.Field<string>("SequenceNo"))
.ToArray();
var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})";
var queryText = string.Format(queryTemplate, numbers);
select * from MySQLBDTable where IdentityID in (1,2,3,4,5,6,7,8,9,10)
union
select * from MySQLBDTable where IdentityID in (11,12,13,14,15,16,17,18,19,20)
MyLocalDataTable
不,
等
我在SQL数据库中有一个表,我想根据在CSV文件中找到的内容将记录拉入另一个数据表
MySQLBDTable
标识ID,
不,
等
SequenceNo是我的公共字段。我想对MySQLBDTable执行一个SELECT操作,该操作只返回MyLocalDataTable中带有SequenceNo的行。我不知道该怎么做。我希望避免使用数千个WHERE-SequenceNo=子句的SELECT查询
有没有一种简单有效的方法可以做到这一点?将序列号值转储到暂存表中,这是一个“临时”表,只包含一列,类型正确,可以保存序列号 如果您使用的是SQL Server,则可以使用大容量插入来完成此操作,这非常快 然后,执行一条SQL语句,该语句将该临时表的内容用于join或IN子句,以查找数据库中的现有行 例如:
UPDATE yourtable
SET does_exist = 1
WHERE sequence_no IN (SELECT sequence_no FROM staging_table)
将序列号值转储到暂存表(仅包含一列的“临时”表)中,该表的类型正确,可以保存序列号 如果您使用的是SQL Server,则可以使用大容量插入来完成此操作,这非常快 然后,执行一条SQL语句,该语句将该临时表的内容用于join或IN子句,以查找数据库中的现有行 例如:
UPDATE yourtable
SET does_exist = 1
WHERE sequence_no IN (SELECT sequence_no FROM staging_table)
按照Lasse所说的,您可以使用从本地数据表直接批量插入SQL Server 按照Lasse所说的,您可以使用从本地数据表直接批量插入SQL Server 您可以生成如下查询:
var numbers = localTable.Rows.Cast<DataRow>()
.Select(r => r.Field<string>("SequenceNo"))
.ToArray();
var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})";
var queryText = string.Format(queryTemplate, numbers);
select * from MySQLBDTable where IdentityID in (1,2,3,4,5,6,7,8,9,10)
union
select * from MySQLBDTable where IdentityID in (11,12,13,14,15,16,17,18,19,20)
您可以生成如下查询:
var numbers = localTable.Rows.Cast<DataRow>()
.Select(r => r.Field<string>("SequenceNo"))
.ToArray();
var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})";
var queryText = string.Format(queryTemplate, numbers);
select * from MySQLBDTable where IdentityID in (1,2,3,4,5,6,7,8,9,10)
union
select * from MySQLBDTable where IdentityID in (11,12,13,14,15,16,17,18,19,20)
好极了谢谢我不确定.NET是否有什么新奇的工具可以在应用程序端实现这一点。临时表听起来很完美,我要实现这个解决方案。太棒了。谢谢我不确定.NET是否有什么新奇的工具可以在应用程序端实现这一点。临时表听起来很完美,我将实现这个解决方案。