我正在尝试编写一个批处理文件,该文件从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再次运行它不会像我想象的那样更新。
答案 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$]')