将数据从Excel导入SQL Server中的主明细表

将数据从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

我有一个excel表格,有四列

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源,可能是数据转换任务和目标任务来存储数据。