要将Excel数据导入SQL Server,请使用OPENROWSET。我的应用程序中的这个过程非常关键,并且会经常使用。每次上传都会在excel中平均有40K行。
表脚本:
CREATE TABLE [dbo].SampleTable(
Sno [int] Primary key IDENTITY(1,1) NOT NULL,
[Col1] [varchar] (20) NOT NULL,
[Col2] [varchar] (30) NOT NULL,
[Col3] [varchar] (30) NOT NULL
)
使用OPENROWSET导入xlsx数据的脚本:
BEGIN TRAN
BEGIN TRY
--Import the xls data into a temp table
SELECT * INTO #tmp
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;
Database=E:\test.xlsx', 'SELECT * FROM [Sheet1$]');
--Remove existing data which matches the Col1 in the xls.
DELETE FROM dbo.SampleTable
WHERE Col1 IN (SELECT DISTINCT (Col1) FROM #tmp)
INSERT INTO [dbo].[SampleTable] (Col1, Col2, Col3)
SELECT Col1, Col2, Col3 FROM #tmp xls
--Clean up
DROP TABLE #tmp;
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
我正在寻求帮助的问题:
想要将此转换为将文件名作为参数的存储过程。因此,从我的ASP.NET mvc页面,我可以通过仅传递文件名来触发此SP。
目前,在任何错误上都没有导入任何内容。是否可以导入所有干净的数据并将错误的数据记录到表/ BCP中作为平面文件等,?