使用BCP(批量插入)在不同表之间复制数据

时间:2014-11-04 15:36:29

标签: c# sql-server bcp

我的progarm将获得两个表格,例如T1(A,B,C)和T2(B,C,D)(表位于不同的SQL服务器上)。 T2有一个额外的列(D)和一个列缺失(A)。

我需要尽快将T1中的行复制到T2中(通过使用BCP utility来实现)。列A应省略,列D应具有一些默认值。我的步骤:

  1. bcp queryout - 从T1选择B,C,xxx作为D,进入临时文件
  2. bcp临时文件进入T2
  3. 我的Select语句应该如何?如何获得D列的默认值?还有其他更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

由于您已标记C#,我建议您使用SQLBulkCopy。以下是CodeProject

上的示例项目

答案 1 :(得分:1)

您可以通过SQL执行此操作 - 使用链接服务器。您可以使用4点表示法来引用SQL中的表。符号为ServerName.DatabaseName.SchemaName.ObjectName。默认架构为dbo,因此要引用表格,语法为:ServerName.DatabaseName.dbo.TableName

您可以在Server1上运行类似的东西:

INSERT INTO Server2.DBName.dbo.T2 (B, C, D)
SELECT A, B, 'Default Value' FROM Server1.DBName.dbo.T1

要设置从Server1到Server2的链接服务器,请运行:

USE master;
GO
EXEC sp_addlinkedserver 
   N'Server2',
   N'SQL Server';
GO