.xlsx到SQL(导致问题的数据库字符串)

时间:2013-12-18 20:43:00

标签: sql-server tsql excel-2010

我一直致力于创建存储过程以将.xlsx文档导入SQL表。如果我为.xlsx文件使用静态数据库路径,它将没有任何问题。我遇到的问题是公司的多个分支将创建特定于其分支的文件。文件名将始终采用Airport Code_date.xlxs格式。

任何人都可以帮助我正确地获取@pathToFile工作。每次我试图将它添加到数据库字符串时,我都收到了错误。我还没有发布完整的代码来使这更容易阅读。如果您需要完整的代码,请告诉我。

谢谢,

FROM OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=' + @pathToFile,
'SELECT * FROM [sheet1$]'
)

1 个答案:

答案 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无法参数化。