Sql server 2008 r2 将文件名作为参数传递的Openrowset
为了将excel数据导入SQL Server,我使用OPENROWSET。在我的应用程序中,这个过程非常关键,而且会经常使用。每次上传,excel中平均有4万行 表格脚本:Sql server 2008 r2 将文件名作为参数传递的Openrowset,sql-server-2008-r2,sql-server-2014,Sql Server 2008 R2,Sql Server 2014,为了将excel数据导入SQL Server,我使用OPENROWSET。在我的应用程序中,这个过程非常关键,而且会经常使用。每次上传,excel中平均有4万行 表格脚本: CREATE TABLE [dbo].SampleTable( Sno [int] Primary key IDENTITY(1,1) NOT NULL, [Col1] [varchar] (20) NOT NULL, [Col2] [varchar] (30) NOT NULL, [Col3
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
)
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
使用OPENROWSET导入xlsx数据的脚本:
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
)
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
我正在寻求帮助的问题:
您需要使用动态SQL将参数添加到“OPENRTOWSET”中。您需要使用动态SQL将参数添加到“OPENRTOWSET”中`