【发布时间】:2010-02-03 01:00:05
【问题描述】:
我是 SSIS 的新手,
我正在从 XLS 电子表格导入数据库表。在此过程中,我想从表中选择一条记录,但这不是查找,即:没有来自输入源的连接的直接 SELECT。然后我想将它与 XLS 中的其他行合并。
最好的方法是什么?变量? OLE DB 命令?
谢谢
【问题讨论】:
我是 SSIS 的新手,
我正在从 XLS 电子表格导入数据库表。在此过程中,我想从表中选择一条记录,但这不是查找,即:没有来自输入源的连接的直接 SELECT。然后我想将它与 XLS 中的其他行合并。
最好的方法是什么?变量? OLE DB 命令?
谢谢
【问题讨论】:
您可以使用 OLE DB 命令,但要记住的重要一点是它是按行触发的,并且可能会很慢。您仍然可以为此目的使用查找,但请确保您使用设置错误输出来忽略查找转换不包含您正在查找的匹配值的情况下的查找错误。
您还可以使用外连接条件而不是内连接的合并转换。
【讨论】:
如果您从数据库表中检索的记录不依赖于电子表格中的行中的数据,那么每一行可能都是相同的 - 这就是您所希望的吗?
在这种情况下,我会考虑在控制流中使用执行 SQL 任务来检索记录并将其保存到变量中。您可以使用数据流中的脚本组件将记录中的值从变量复制到每行中的相应字段。这意味着查找数据只检索一次,而不是每行检索一次,这就像上面的 jn29098 所说的那样慢。
如果您的数据流的目标与您从中提取“查找”记录的数据库相同,那么您还可以考虑使用执行 SQL 任务(在控制流中)在电子表格数据已到达数据库(一旦数据流完成)。这样会更有效率。
【讨论】: