2017-01-20 59 views
0

我有以下SQL代碼動態填充數據到表中,但我現在只需要插入。我知道select into也創建表,而insert只是填充現有的表。Openquery選擇到VS插入到(SQL Server 2016)問題

這裏是SELECT INTO:

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

這裏是INSERT INTO,我試過了。

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

這當然給了我語法錯誤。

我已經嘗試了許多相似的變化,並想知道如果有人可以發現我的INSERT INTO語法錯誤?

+0

是因爲你不能使用*與插入語句?!? – choloboy

回答

0

需要source_db後增加的模式,並刪除*後插入

SELECT * FROM source_db.dbo.tablename 
0

你可以試試下面的代碼。

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

SET @SQL = 'INSERT INTO OPENQUERY(destinationdb.stage.'[email protected] + ', ''SELECT field1,field2,field3,field4 FROM db.table1'')' 
0

經過幾次嘗試,我終於自己搞清楚了! 這是什麼工作:

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