让我先解释一下我的设置,然后再告诉你我正在处理的问题:
我有两个数据库服务器: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表。语法?
谢谢。
答案 0 :(得分:0)
您必须使用“ OPENQUERY”执行此操作-请参见
https://docs.microsoft.com/de-de/sql/t-sql/functions/openquery-transact-sql?view=sql-server-ver15
答案 1 :(得分:0)
你也可以使用这个:
INSERT INTO [LinkedServer].Database.Schema.Table(Attributes)
From
Select (attributes) from Database.Schema.Table as TableAlias