【发布时间】:2015-06-15 19:47:27
【问题描述】:
我正在构建一个 SSIS 包,用于从 .CSV 文件中获取数据并将其加载到 SQL Server 数据库中的表中。 .CSV 文件的列比我的表多,我希望根据其中一些未插入到表中的列来过滤掉数据。
我在.CSV 文件中将年份、种类、类型、美元作为列名,但我只是将类型和美元提取到数据库中。但是,我只能拉出 kind="L" 和 year 是当前年份的那些行(有一个主要警告)。如果该过程在给定年份的第一季度(因此月份 .CSV 文件中提取的行的限定符。例如,假设这个包在 2015 年 2 月运行,我需要它从我的 .CSV 文件中只提取 2014 年和 kind="L" 的行。如果是 2015 年 9 月,那么它需要以 2015 年和 kind="L" 拉入行。
知道最好的方法是什么吗?现在我的包中有条件拆分,但我只能说 year==YEAR(GETDATE()) 并且这不适用于第一季度。我需要某种变量逻辑来表达IF(currentmonth<=3 THAN @year = currentyear-1) ELSE (@year = currentyear) 之类的内容,然后在条件拆分中使用@year 变量。这可能吗?
非常感谢任何帮助!
【问题讨论】:
-
我发现当我的逻辑越来越复杂的时候,Script组件的使用越来越合适了。我建议对filter your data flow based on your logic 使用脚本组件。您可以控制将哪些数据发送到哪些输出。 (并且只使用包含“好”数据的输出。)
-
我发现当我的逻辑变得越来越复杂时,使用数据库逻辑是最合适的:)(即根据@maxymoo响应)
标签: sql-server csv ssis import-from-excel dts