Sql SSIS包和外键

Sql SSIS包和外键,sql,sql-server,ssis,ssms,etl,Sql,Sql Server,Ssis,Ssms,Etl,我有一个SSIS包,它正在将一个CSV文件导入一个名为“OPEX_Expense”的表中。我还有一个名为OPEX_Accounts的表,其中包含以下列: opex_id(主键) opex_名称 总账账户 “运营支出”有以下列: OPEX_SpendID(主键) opex_id(opex_Accounts表的外键) 日期 项目文本 数量 我已经创建了一个数据流,CSV将把值导入到OPEX_支出表的列中,但外键列(OPEX_id)显示为“NULL”。我该如何解决这个问题 如果CSV文件中确实

我有一个SSIS包,它正在将一个CSV文件导入一个名为“OPEX_Expense”的表中。我还有一个名为OPEX_Accounts的表,其中包含以下列:

  • opex_id(主键)
  • opex_名称
  • 总账账户
“运营支出”有以下列:

  • OPEX_SpendID(主键)
  • opex_id(opex_Accounts表的外键)
  • 日期
  • 项目文本
  • 数量

我已经创建了一个数据流,CSV将把值导入到OPEX_支出表的列中,但外键列(OPEX_id)显示为“NULL”。我该如何解决这个问题

如果CSV文件中确实缺少值,请创建一个虚拟Opex_Id,例如

INSERT INTO Opex_Accounts
(Opex_Id 
, Opex_Name
, Gl_Account
)
VALUES(-1
  ,'UNKNOWN'
  ,'UNKNOWN'
);

ALTER TABLE Opex_Spend ADD CONSTRAINT [DF_Opex_Spend_Opex_Id]  DEFAULT (-1) FOR Opex_Id;

如果CSV文件中确实缺少值,请创建一个虚拟Opex_Id,例如

INSERT INTO Opex_Accounts
(Opex_Id 
, Opex_Name
, Gl_Account
)
VALUES(-1
  ,'UNKNOWN'
  ,'UNKNOWN'
);

ALTER TABLE Opex_Spend ADD CONSTRAINT [DF_Opex_Spend_Opex_Id]  DEFAULT (-1) FOR Opex_Id;

如果CSV文件中没有opex_id的源列,那么可以为所有记录添加一个虚拟默认值。为此,您可以在SSIS中使用。但是如果您的意思是在源代码中有该列的值,但希望在空源代码值中有一些默认值,然后您也可以使用,但您可以选择替换现有列,而不是选择添加新列,然后使用SSIS中的REPACENULL函数将空值视为其他内容。

如果CSV文件中没有opex_id的源列,然后,您可以做的一件事是为所有记录添加一个虚拟默认值。为此,您可以在SSIS中使用。但是如果您的意思是在源代码中有该列的值,但希望在空源代码值中有一些默认值,然后您也可以使用,但您可以选择替换现有列,而不是选择添加新列,然后使用SSIS中的REPACENULL函数将空值视为其他值。

opex\U id的预期值是多少?csv文件的结构是什么?请提供一个日期样本?opex_id如何显示为空?您是通过查找表OPEX_Expense来获取此值的吗??这些文件是否加载在同一数据流中?能否请您更新问题的更多细节,也许是一个图像的数据流或包?抱歉,迟了答复。数据流中没有查找。您是否建议我将其纳入流程?opex\u id的预期值是多少?csv文件的结构是什么?请提供一个日期样本?opex_id如何显示为空?您是通过查找表OPEX_Expense来获取此值的吗??这些文件是否加载在同一数据流中?能否请您更新问题的更多细节,也许是一个图像的数据流或包?抱歉,迟了答复。数据流中没有查找。你是否建议我将其纳入流程?