在sql中复制数据时添加列

sql sqlbulkcopy sqldatareader sql-server-2008

我正在使用SqlBulkCopy将一些表中的一些记录批量插入到另一个表中。该查询使用SqlDataReader来获取数据。表之间的一个重要区别(除了在映射中处理的列顺序之外)是目标表具有日期列,需要在该日期列中添加当前日期。此日期不在源表中。如何将此添加到当前正常工作的过程中减去此值?

当前的工作代码如下所示:

SqlCommand cmd = new SqlCommand("SELECT * from dbo.source", cn);
            SqlDataReader rdr = cmd.ExecuteReader();                

            using (SqlBulkCopy copy = new SqlBulkCopy(cn))
            {
                copy.ColumnMappings.Add(0, 0);
                copy.ColumnMappings.Add(1, 2);
                copy.ColumnMappings.Add(3, 3);
                copy.ColumnMappings.Add(2, 4);
                copy.ColumnMappings.Add(5, 5);
                copy.ColumnMappings.Add(14, 6);
                copy.DestinationTableName = "destination";
                copy.WriteToServer(rdr);
            }

DB是sql 2008 ENT。

一般承认的答案

您可以添加它以由SELECT返回:

SELECT *, GETDATE() AS CurrentDate from dbo.source

然后为它添加另一个ColumnMapping。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因