2017-01-20 6 views
0

У меня есть следующий код SQL для динамического заполнения данных в таблицах, но теперь мне нужно только вставить. Я знаю, что select into также создал таблицы, тогда как insert просто заполняет существующие таблицы.Openquery select into VS insert in (SQL Server 2016) Issue

Вот 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 + ''');'