SSIS包和外键

时间:2017-03-23 02:08:00

标签: sql sql-server ssis ssms etl

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

  • opex_id(主键)
  • opex_name
  • gl_account

“OPEX_Spend”包含以下列:

  • OPEX_SpendID(主键)
  • opex_id(OPEX_Accounts表的外键)
  • 日期
  • ItemText
  • 金额

我创建了一个数据流,其中CSV会将值导入OPEX_Spend表的列,但外键列(opex_id)将显示为“NULL”。我该如何解决?

2 个答案:

答案 0 :(得分:0)

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

while (reader.Read()) {string bin_type = reader.GetString(0);}

答案 1 :(得分:0)

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

相关问题