使用EXEC()AT [链接服务器]从本地服务器插入数据

时间:2017-01-04 16:24:49

标签: mysql sql-server-2008 linked-server

让我先解释一下我的设置,然后再告诉你我正在处理的问题:

我有两个数据库服务器:SQL 2008和MySql。我在SQL中有一个过程,首先,在MySql中删除一个表,然后用SQL本身的一些数据填充它。对于我使用OPENQUERY的两个动作。但是,正如您所知,它不知道支持大数据。截断MySql中的表变得非常缓慢(删除6万行需要14分钟......疯了!)。

所以我发现我可以使用这种语法进行截断:

EXEC(' TRUNCATE TABLE table_name')AT LINKEDSERVER

但是我还没有找到通过这个方法将SQL表的结果插入MySql表的语法。当我插入静态数据时,它工作正常,如下例所示:

EXEC(' INSERT INTO table_name(row1,row2)VALUES(value1,value2)')AT LINKEDSERVER

但我想从SQL中插入结果,就像我说的那样:

EXEC(' INSERT INTO table_name(row1,row2)SELECT r1,r2 FROM SQL_DB.sql_table_name')AT LINKEDSERVER

我敢打赌,我不能这样做,因为在那个语法中,我在MySql服务器中执行exec并且SQL表不存在。那么如何在" EXEC()AT"中引用我的SQL表。语法?

谢谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你也可以使用这个:

INSERT INTO [LinkedServer].Database.Schema.Table(Attributes)
From
Select (attributes) from Database.Schema.Table as TableAlias