Openquery选择进入VS插入(SQL Server 2016)问题

时间:2017-01-20 02:00:50

标签: sql sql-server tsql sql-server-2016

我有以下SQL代码来动态地将数据填充到表中,但我现在只需要插入。我知道select into也创建了表,而insert只是填充现有的表。

这是SELECT INTO:

SET @SQL = 'Select * into destinationdb.stage.'+@Name + ' from    openquery("LINKEDSERVER", ' + '''SELECT * FROM source_db.' + @Name + ''');'

这是我尝试过的INSERT INTO。

SET @SQL='insert into destinationdb.stage.'+@Name + ' * from  openquery("LINKEDSERVER", ' + '''SELECT * FROM source_db.' + @Name + ''');'

这当然给了我语法错误。

我尝试了很多类似的变体,我想知道是否有人可以在INSERT INTO中发现我的语法错误?

3 个答案:

答案 0 :(得分:0)

您需要在source_db之后添加架构,并在插入

后删除*
SELECT * FROM source_db.dbo.tablename

答案 1 :(得分:0)

您可以尝试以下代码。

DECLARE @SQL varchar(max) = ''
DECLARE @Name varchar(100)='tablename' 

SET @SQL = 'INSERT INTO OPENQUERY(destinationdb.stage.'+@Name + ', ''SELECT field1,field2,field3,field4 FROM db.table1'')'

答案 2 :(得分:0)

经过几次尝试后,我最终自己搞清楚了! 这是有用的:

SET @SQL=' insert into destinationdb.stage.'+@Name + ' select * from  openquery("LINKEDSERVER", ' + '''SELECT * FROM sourcedb.' + @Name + ''');'