我有以下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中发现我的语法错误?
答案 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 + ''');'