通过存储过程从Excel导入数据
我想用SPinput我的表名,以便从excel表导入数据并加载到数据库。 但是,收到以下错误。 你能纠正它吗? 谢谢。
create proc Up_Export ( @Tablename as varchar(20) = null ) AS SET NOCOUNT ON begin INSERT INTO @Tablename --Receiving error over here, informs incorrect syntax near @tablename SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls', @Tablename) set nocount off end
我看到两件事情是不对的。
首先你做
INSERT INTO @Tablename
你不能在那个地方使用一个variables。 相反,你应该使用这样的dynamicSQL
exec (' INSERT INTO ' + @Tablename + ' SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', ''Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls'', ''select * from myTable'') ')
请注意,您必须在string内使用双引号(如“'”)。 “转义”单引号是必要的,因为如果你不这样做,它将表示string的结束。
第二个看起来不正确的东西是放置@Tablename的第二个参数
'Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls', @Tablename)
作为第二个参数,你应该有以下的东西
'SELECT * FROM [Sheet2$]'
Sheet2是Excel中的表单
尝试一些变化,并注意sqlparsing器在错误的情况下给你的反馈。 祝你好运!