将数据从Excel导入SQL Server中的主明细表
我有一个excel表格,有四列将数据从Excel导入SQL Server中的主明细表,sql,sql-server,sql-server-2008,tsql,dts,Sql,Sql Server,Sql Server 2008,Tsql,Dts,我有一个excel表格,有四列 SaleID, SaleDate,PersonID, ProductID, SaleQuantity,UnitRate 我想在一对多关系表中导入这些数据,这样每个人的销售额都应该被记录下来。我的桌子如下 Sale Master SaleID,SaleDate,PersonID SaleDetail SaleID,productID,SaleQuantity,UnitRate 我试着按照老师的指示去做。我尝试了以下查询以开始 SELECT * FROM OPE
SaleID, SaleDate,PersonID, ProductID, SaleQuantity,UnitRate
我想在一对多关系表中导入这些数据,这样每个人的销售额都应该被记录下来。我的桌子如下
Sale Master
SaleID,SaleDate,PersonID
SaleDetail
SaleID,productID,SaleQuantity,UnitRate
我试着按照老师的指示去做。我尝试了以下查询以开始
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=d:\tmp.xlsx', 'Select * from [aa$]')
但它给了我以下的错误
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Office Access database engine could not find the object 'aa$'. Make sure the object exists and that you spell its name and the path name correctly.".
还有其他更好的方法吗
好的,我不确定我是否按照你的要求做了这件事。因为我知道我可以使用SSIS, 我使用SSI。首先,我创建了一个示例Excel文件。你说它有四列,但我看到六列 栏目: SaleID,SaleDate,PersonID,ProductID,SaleQuantity,UnitRate 在我的测试数据库中,我创建了两个表来导入数据:
CREATE TABLE SalesMaster (
SalesID INT NOT NULL,
SalesDate DATE,
PersonID INT
CONSTRAINT PK_SalesMaster_SalesID
PRIMARY KEY (SalesID))
CREATE TABLE SalesDetail (
ProductID INT NOT NULL,
SalesQuantity INT,
UnitRate MONEY,
SalesID INT
CONSTRAINT PK_SalesDetail_ProductID
PRIMARY KEY (ProductID),
CONSTRAINT FK_SalesDetail_SalesMaster_SalesID
FOREIGN KEY (SalesID)
REFERENCES SalesMaster(SalesID))
然后,我为任务创建了一个SSIS包。首先关于控制流,我使用了两个数据流任务。第一个用于填充SalesMaster表,第二个用于填充SalesDetail表
每个数据流任务都有Excel源适配器和OLE DB目标适配器。配置Excel源时,请确保正确映射Excel文件中的列。然后运行包,它就应该完成任务了
希望这就是你要找的。谢谢 首先,你不能使用SSIS吗?其次,您是否100%确定工作表名称为aa?文件名是tmp.xlsx,在d:\?当您尝试此查询时,Excel文件是否打开?工作表是否真的名为“aa”@stb是的,我重命名了工作表,因为它不是working@SeanW我可以使用SSIS。如果您能在这方面提供指导,请尝试使用数据流任务设计包。在任务内部,使用excel源,可能是数据转换任务和目标任务来存储数据。