带有可变路径的openrowset中的数据导入错误

时间:2017-09-20 06:02:17

标签: sql sql-server-2008

我使用openrowset将我的数据从excel文件导入到Sql Database 以下是我的命令

declare @path varchar(100)='E:\11.08.2017 .xlsx;'

SELECT * into palwal12 FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database='+@path+' HDR=YES; IMEX=1', 'SELECT * FROM [sheet1$]')

我使用简单查询成功地将数据插入表中。但是,如果我想使用变量路径插入数据,那么我有一个错误 '+'附近的语法不正确。 我认为我使用路径变量的语法是错误的。有人可以帮帮我。

2 个答案:

答案 0 :(得分:1)

您不能在openrowset参数中使用变量,它们必须是字符串文字 你可以做的是创建一个动态的SQL然后执行它。 例如:

Declare @sql varchar(max) = your sql
exec(@sql)

答案 1 :(得分:0)

正如@jayvee建议我创建一个动态Sql并执行我的查询,如下所示

`DECLARE @sql varchar(MAX);
DECLARE @path varchar(255);
SET @path = 'E:\11.08.2017 .xlsx;'
SET @sql = 'SELECT * INTO ravan FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
  ''Excel 12.0; Database='+@path+' HDR=YES; IMEX=1'', 
  ''SELECT * FROM [sheet1$]'')';

EXEC (@sql)