我一直致力于创建存储过程以将.xlsx文档导入SQL表。如果我为.xlsx文件使用静态数据库路径,它将没有任何问题。我遇到的问题是公司的多个分支将创建特定于其分支的文件。文件名将始终采用Airport Code_date.xlxs格式。
任何人都可以帮助我正确地获取@pathToFile工作。每次我试图将它添加到数据库字符串时,我都收到了错误。我还没有发布完整的代码来使这更容易阅读。如果您需要完整的代码,请告诉我。
谢谢,
FROM OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=' + @pathToFile,
'SELECT * FROM [sheet1$]'
)
答案 0 :(得分:4)
你需要动态SQL,因为OPENROWSET的参数必须是常量。
DECLARE @sql varchar(max)
SET @sql = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',' + QUOTENAME('Excel 12.0;Database='+@pathtofile,CHAR(39)) + ',''SELECT * FROM [sheet1$]'')'
INSERT DestinationTable
EXEC sp_executesql @sql
QUOTENAME()用于防止SQL注入,因为@pathtofile无法参数化。