0

我有一个有四列的 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.".

有没有其他更好的方法来做到这一点

在此处输入图像描述

4

1 回答 1

1

好的,我不确定我是否按照您的意愿执行此操作。因为我看到我可以使用 SSIS,所以我使用了 SSIS。首先,我创建了一个示例 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 文件中的列。然后运行该软件包,它应该可以完成这项工作。

希望这就是你要找的。谢谢!

于 2012-07-10T19:52:55.413 回答