使用SSIS 2008 R2删除一些列,重新排列剩余列并移动多个.csv文件的已处理文件

时间:2012-10-09 11:46:10

标签: excel ssis

用Google搜索有关如何解决此问题的一些提示。但没有得到任何有用的点击。 现在,我想知道我是否可以在SSIS中实现相同目标。

文件夹中有多个.csv文件。我想要实现的目标是:

  1. 打开每个.csv文件(我会使用参数作为文件名的更改)
  2. 删除一些列
  3. 按特定顺序重新排列其余列
  4. 保存.csv文件(不带Excel确认消息框)
  5. 关闭.csv文件
  6. 将处理过的文件移至另一个文件夹。
  7. 并重新启动整个上述过程,直到处理完文件夹中的所有.csv文件。

    最初我以为我可以使用For Each循环容器和执行进程任务来实现这一点。但是,无法找到有关如何实现上述目标的任何资源。

    实施例: 每个来源.csv文件的标头:

    代码 | NAME | 价值1 | 价值2 | 价值3 | DATE | 数量 | 价格 | VALUE_ADD |的 ZONE

    我需要删除列:NAME | VALUE_ADD |从每个文件中选区并按以下顺序重新排列列。

    所需的列顺序:

    代码 |的 DATE | 价值1 | 价值2 | 价值3 | 价格 |的 QTY

    我知道在SSIS中这是可能的。但我无法弄明白。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用以下四个步骤轻松完成:

  • 使用“平面文件连接”打开CSV。
  • 使用“平面文件来源”组件来阅读您的CSV。
  • 使用“派生列”组件重新排列列。
  • 使用“平面文件目标”组件保存CSV。

Etvoilà!

答案 1 :(得分:0)

目前尚不清楚为什么要使用SSIS来执行此操作:您的任务似乎是操纵数据库外的文本文件,并且通常在使用语言编写的小脚本或程序中执行此操作要容易得多。良好的CSV解析支持(Perl,Python,PowerShell等)。如果这应该是更大的包的一部分,那么您可以使用Execute Process任务简单地调用脚本。 SSIS是一个很棒的工具,但我觉得这样的任务非常尴尬。