2016-09-10 40 views
1

我在两个不同位置的两台数据库,我用下面的代码复制两个不同的记录之间大数据在最快的方式

set rst1 = conn.execute ("Select A1,A2,A3 from Tickets") 
do until rst1.eof 
conn2.execute ("Insert into Tickets values (rst1!A1, rst1!A2, rst1!A3)") 
rst1.movenext 
loop 

将数据复制到一个表从位置A到位置B现在是数据库已经增长到100万条以上的记录,当它将数据复制到位置B时,它花费如此多的时间来遍历所有记录。

位置A和位置B中名为“Tickets”的数据库表是相同的,我可以使用方法以最快的方式将位置A中的所有数据复制到B,而无需遍历所有数以百万计的记录每次rds。

感谢

+0

您是否尝试过使用存储过程? –

+0

不.....我怎么做两个数据库实例之间。位置A通过互联网从位置B访问,所以我想基本上通过互联网从两个不同数据库实例之间的两个类似表中复制数据。 – DoreenSly

回答

0

您可以使用批量复制和插入,这将是比基于事务的插入查询速度快:

bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c 

相若方式批量插入

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail 
FROM '\\computer2\salesforce\dailyorders\neworders.txt' 

这会更快,因为它不是以交易为基础的

https://msdn.microsoft.com/en-us/library/ms175937.aspx

+0

你能否提供一个参考资料,说明这个选项实际上比OP当前使用的要快? –

+0

至于我的理解bcp并没有做很多事务日志,而常规插入做了很多写入事务日志http://stackoverflow.com/questions/6793845/why-is-bcp-so-fast –

+0

公平不够,只是认为它有一个更快的原因是有帮助的。 –

相关问题