select 1 as X,d.* into [TravelData] from OPENROWSET('SQLNCLI','Server=<redacted>',
'exec [OtherDB].[GetTravelData] 1, ''28-Nov-2016 16:00'', ''28-Nov-2016 19:00''') as d
我将此作为将远程数据库粘贴到本地表中的一种方法。这种语法似乎有效但我得到错误:
数据库中已有一个名为“TravelData”的对象。
有道理,SELECT INTO是假设来创建表格。但我想我只是将SELECT
更改为INSERT
然后我会收到语法错误。正确的语法应该是将这些数据放入结构与查询输出匹配的现有数据库表中吗?
答案 0 :(得分:2)
以下是INSERT INTO SELECT
语法
INSERT INTO [TravelData]
(X,
col1,
col2,
...)
SELECT 1 AS X,
d.col1,
d.col2,
.....
FROM OPENROWSET('SQLNCLI',
'Server=<redacted>',
'exec [OtherDB].[GetTravelData] 1, ''28-Nov-2016 16:00'', ''28-Nov-2016 19:00''') AS d
注意:而不是*
列表中的select
,而是添加column
列表。同样在Insert
中提及列列表
答案 1 :(得分:2)
它与使用OPENROWSET无关。
INSERT INTO ...
要求该表已存在。
SELECT ... INTO
要求表不存在。该表将由语句使用SELECT中定义的列创建。