用于将Excel数据插入SQL Server表的批处理文件

时间:2016-07-08 08:00:18

标签: sql-server excel batch-file

我正在尝试编写一个批处理文件,该文件从Excel电子表格中获取信息并将新行添加到我的SQL Server中。

我认为我现在所拥有的几乎就在那里。当它运行并说一条线已经更新,但它没有。

这是我的批处理文件:

@echo off

copy \\RDS-2012-C\2012_N_Drive\Operations\Reports\Metrics\sql2.xlsx C:\ACCESS_SQLSVR\import_location
sqlcmd -S RDS-2012-G\RDS_SQL -d Master -i C:\ACCESS_SQLSVR\import_location\sesame_import.sql

pause

这就是它的运作方式:

EXEC sp_configure 'Show Advanced Options', 1;
RECONFIGURE
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE
GO

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1;
GO

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1;
GO

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0;Database=C:\ACCESS_SQLSVR\import_location\sql2.xlsx;HDR=YES;IMEX=1',
'SELECT * FROM [SQL$]')
GO

我只需要一个不同的命令而不是SELECT吗?

此外,SQL Server中的完整数据库和表称为:

Sesame_FTest.dbo.SQL

当表不存在时运行此表会导致创建表并填充Excel信息。但是使用新的Excel再次运行它不会像我想象的那样更新。

1 个答案:

答案 0 :(得分:1)

试试这样。 。 。

------ INSERT INTO NON-EXISTING TABLES

USE [YourDatabase]
GO

SELECT * INTO tbl_Mapping
FROM   OPENROWSET('Microsoft.ACE.OLEDB.12.0',
       'Excel 12.0 Xml;HDR=YES;Database=C:\Users\rshuell001\Desktop\State Street\Final Deliverables\Raw Data\Mapping.xlsx',
       'SELECT * FROM [Mapping$]')

SELECT * INTO tbl_Data
FROM   OPENROWSET('Microsoft.ACE.OLEDB.12.0',
       'Excel 12.0 Xml;HDR=YES;Database=C:\Users\rshuell001\Desktop\State Street\Final Deliverables\Raw Data\Data.xlsx',
       'SELECT * FROM [Data$]')

或。 。 。

------ INSERT INTO EXISTING TABLES

USE [YourDatabase]
GO
Insert INTO tbl_Mapping
SELECT * FROM   OPENROWSET('Microsoft.ACE.OLEDB.12.0',
       'Excel 12.0 Xml;HDR=YES;Database=C:\Users\rshuell001\Desktop\State Street\Final Deliverables\Raw Data\Mapping.xlsx',
       'SELECT * FROM [Mapping$]')


Insert INTO tbl_Data
SELECT * FROM   OPENROWSET('Microsoft.ACE.OLEDB.12.0',
       'Excel 12.0 Xml;HDR=YES;Database=C:\Users\rshuell001\Desktop\State Street\Final Deliverables\Raw Data\Data.xlsx',
       'SELECT * FROM [Data$]')