簡體   English   中英

通過存儲過程將數據從Excel導入SQL Server

[英]Import data from Excel to SQL Server via Stored Procedure

我在網上找到了一些有關如何通過vb將excel導入sql的示例。 但是我可以通過存儲過程嗎?

Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [SheetName$]')

這樣,我可以傳遞:

('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
        'SELECT * FROM [SheetName$]')

作為SQL Server SP的參數? 還是我還能如何保護自己免受sql注入和其他攻擊?

DECLARE @bcpCommand varchar(2000), @dt varchar(15), @fn varchar(20), @fn1 varchar(30), @ty char(4) = '.csv', @path varchar(15) = 'C:\sive\'

SELECT @dt = convert(varchar,getdate(),112)

SELECT @fn = 'TblEnquiry_bcp'

SELECT @fn1 = @fn+'_'+@dt+@ty

SELECT @bcpCommand = 'ren '+ @path+@fn + @ty +' ' + @path + @fn1

SELECT @bcpCommand = 'ren '+ @path+@fn + @ty +' ' + @fn1

EXEC xp_cmdshell @bcpCommand

select @bcpCommand = 'bcp "SELECT hc.RegNo VehicleNo, convert(date,hv.DisplayDateTime,112) RunningDate,

       COUNT(1) AS NoofCountPlayed, hv.BoardTransID BoardTransId

       FROM Advertisementlog hv  WITH (NOLOCK)

       INNER JOIN VehiclesM hc WITH (NOLOCK) ON hv.BoardTransID=hc.RTONo

       WHERE convert(varchar(30),displaydatetime,112)>=convert(date,DATEADD(month, DATEDIFF(month, 0, getdate()), 0),112)

       AND convert(varchar(30),displaydatetime,112) <= convert(date,getdate(),112)

       AND hc.RTONo IS NOT NULL AND hc.RTONo <>''

       GROUP BY hc.RegNo, convert(date,hv.DisplayDateTime,112), hv.BoardTransID" queryout C:\Sive\TblEnquiry_bcp.csv -t, -c -T -SHABXC3NKSD -d WeddingVowsUAT'



EXEC xp_cmdshell @bcpCommand

select @bcpCommand = 'copy /b c:\sive\TblEnquiry_Header.csv+c:\sive\tblenquiry_bcp.csv c:\sive\test_bcp.csv'

EXEC xp_cmdshell @bcpCommand

您可以設置一個SSIS程序包,並將其從Excel傳輸到SQL Server(或平面文件等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM