服务器A
Table1
Id Name State Country
1 Abc OH USA
Table2
Id Counties Places
1 abc def
1 koi koii
1 joi joio
服务器B
Table1
Id Name State Country
Table2
Id Counties Places
我在两台服务器下都有2台服务器ServerA和ServerB有两个表Table1 / Table2我正在尝试从Table1复制单行,并将表2中的相关行复制到ServerB的Table1和Table2。
这就是我尝试这样做的方式:
connection1 = connection to ServerA
connection2 = connection to ServerB
SqlCommand cmd1 = new SqlCommand("Select * from Table1 where id = 1");
SqlCommand cmd2 = new SqlCommand("Select * from Table2 where id = 1");
Connection1.Open();
Connection2.Open();
SqlDataReader reader1 = cmd1.ExecuteReader();
SqlDataReader reader2 = cmd2.ExecuteReader();
var value1 = reader1.read();
var value2 = reader2.read();
我使用SqlDataReader
并执行上述命令并获取数据并将其插入ServerB Table1 and Table2
。
这是正确的方法吗?可以使用更好的sql命令吗?
答案 0 :(得分:1)
尝试使用 SQLBULKCOPY (See Example here),这要快得多,尤其是如果您有大量数据
答案 1 :(得分:0)
大多数数据库允许您连接到其他数据库。特定的sytnax高度依赖数据库。但是,一旦你这样做,你可以做类似的事情:
select *
into server2.<db2>.<schema2>.table2
from server1.<db>.<schema>.table1
或
create table server2.<db2>.table2 as
select *
from server1.<db>.table1
(语法取决于数据库。第一个是sql-server-like,第二个是oracle-like。)
如果您的数据有任何大小,使用链接服务器肯定是最好的方法。通过将其读入内存,您可能想要一次读取并插入一行。如果你有超过几十行,你会发现这种方式比必要的更耗时。