SSIS和外键

时间:2017-04-04 19:51:33

标签: sql sql-server ssis

我创建了一个SSIS包,它接受一个CSV文件并将其导入名为“OPEX_Spend”的表中。

我在OPEX_Spend表中添加了一个外键,但是当我运行查询时,OPEX_Spend表中的Account_ID列显示为“NULL”。这是为什么?我是否必须在数据流中加入某种查找?目前数据流如下:

  • 平面文件来源
  • OLE DB目的地

以下是表格的设置方式:

CREATE TABLE OPEX_Accounts 
(
    OPEX_ID int IDENTITY (1,1) PRIMARY KEY,
    OPEX_Name varchar(50),
    GL_Account varchar(50)
)

CREATE TABLE OPEX_Spend 
(
    Actuals_ID int IDENTITY (1,1) PRIMARY KEY,
    Account_ID int,

    CONSTRAINT FK_OPEXID 
        FOREIGN KEY (OPEX_ID) REFERENCES OPEX_Accounts (OPEX_ID),
    Actuals_Date varchar(50),
    Transaction_Text varchar (50),
    Actuals_Amount numeric
)

1 个答案:

答案 0 :(得分:2)

您可以在数据流任务上使用查找转换来执行此操作:

https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/lookup-transformation

基本上,您需要将源数据中的帐户名称用作OPEX_Accounts中帐户名称的连接,以获取OPEX_ID。然后,您可以配置查找转换,将OPEX_ID作为管道中的新列添加,并将其映射到目标表。

同样重要的是决定如何处理不产生有效查找的源行。您可以使用这些抛出错误来阻止程序包运行,或将它们指向特殊的不匹配输出。