CREATE PROC proc_excel_to_sql
(
@path VARCHAR(50),
@tbname varchar(50)
)
AS
SET @path='c:\book1.xls'
SET @s=''Microsoft.Jet.OLEDB.4.0','Data Source="‘+@path+’";Extended properties=Excel 5.0''
SET @s='SELECT * INTO ('+@tbname+') FROM OPENDATASOURCE('+@s+')...sheet1$'
EXEC(@s)
想做一个存储过程把excel导入sql。上面的有问题,该怎么解决呢?

解决方案 »

  1.   

    SET @s=''Microsoft.Jet.OLEDB.4.0','Data Source="‘+@path+’";Extended properties=Excel 5.0''
    两个单引号表示一个
    还有里面貌似有全交引号
    你可以先print @s先看看
      

  2.   

    CREATE PROC proc_excel_to_sql
    @path VARCHAR(50),
    @tbname varchar(50)
    AS
    BEGIN
    declare @s varchar(max)
    SET @path='c:\book1.xls'
    SET @s='SELECT * INTO ('+@tbname+') FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',''Data Source='''+@path+''';Extended Properties=Excel 5.0'')...sheet1$'
    EXEC(@s)
    END
    GO
    试试!
      

  3.   

    CREATE PROC proc_excel_to_sql
    (
    @path VARCHAR(50),
    @tbname varchar(50)
    )
    AS
    --SET @path='c:\book1.xls'
    declare @s varchar(1000)
    SET @s=' FROM OpenRowSet(''MICROSOFT.JET.OLEDB.4.0'',''EXCEL 8.0;HDR=YES;IMEX=2;DataBase='+@path+''',[sheet1$]) t'
    SET @s='SELECT * INTO '+@tbname+@s
    --print @s
    EXEC(@s)
    go