将表从一个数据库复制到另一个连接上的数据库(ADO.NET)

时间:2011-06-17 19:47:41

标签: sql vb.net ado.net oledb

我正在尝试使用OleDb将数据库中的表复制到VB.NET中另一个连接上的另一个数据库中。如果他们在同一个连接上我会使用SELECT INTO,但他们不是。我有两个不同的OleDbConnection,看不到一个简单的方法。

现在我尝试使用OleDbDataAdapter将数据库复制到DataTable中,然后循环遍历DataTable并将每条记录一次插入目标数据库。这显然需要花费大量时间来处理我可能正在处理的大型数据库,并且我必须处理转义字符串,空值等等。

有更简单的方法吗?

谢谢, 洛根

编辑 - 只是为了更清楚:我有两个OleDbConnection对象,一个直接链接到我的计算机上的本地.mdb文件(JET)。另一个链接到我们服务器上的数据库(SQLOLEDB)。我想这样做:

"SELECT * FROM fromDB INTO toDB"

但我不能,因为fromDBtoDB在不同的连接上,而OleDbCommand对象只附加到一个。我可以看到如何执行此操作的唯一方法是连接到fromDB,将其复制到DataTable,连接到toDB,并将DataTable中的所有数据逐行复制到{{1} }}。我想知道是否有更简单的方法来做到这一点。

2 个答案:

答案 0 :(得分:0)

如果您受限于此体系结构,一个想法是在服务器上编写存储过程,该存储过程在一次调用中接受大量行数据。然后,它可以将行数据写入文件以供将来批量插入使用,或者它可以尝试直接插入行。

这也有利于加快与服务器的高延迟连接速度。

此外,如果使用参数化语句,则可以避免必须转义字符串等。

答案 1 :(得分:-1)

如果您只是从一个复制到另一个,为什么不在SQL中执行?

您可以在一个数据库中创建一个同义词,指向另一个数据库(在另一个服务器上)的表,视图或存储过程。然后,您可以像插入同一个数据库中的表一样插入此同义词。

http://www.developer.com/db/article.php/3613301/Using-Synonyms-in-SQL-Server-2005.htm