使用 SSIS,如何将 SQL 结果导出到多个 CSV 文件?

With SSIS, how do you export SQL results to multiple CSV files?

在我的 SSIS 包中,我有一个执行 SQL 任务,它应该 return 多达一亿 (100,000,000) 行。

我想将这些结果导出到多个 CSV 文件,每个文件最多包含 500,000 行。因此,如果 SQL 任务生成 100,000,000 个结果,我想生成 200 个 csv 文件,每个文件包含 500,000 条记录。

可以将结果自动划分为多个导出的 CSV 文件的最佳 SSIS 任务是什么?

我目前正在开发一个脚本任务,但发现它的性能不是很好。我对 SSIS 有点陌生,所以我不熟悉所有可用的不同任务,我想知道是否有另一个可以更有效地完成它。

有什么建议吗?

静态方法

先添加数据流任务。

在数据流任务中添加以下内容:

  1. A来源:截图中的ADO NET Source。包含检索数据的查询
  2. 条件拆分:您添加的每个条件都会产生蓝色输出箭头。您需要将每个箭头连接到一个目的地
  3. Excel 目的地或平面文件目的地。取决于您想要 Excel 文件还是 csv 文件。对于 CSV 文件,您需要设置文件连接。

在条件拆分中,您可以添加多个条件来拆分数据并获得默认输出。

平面文件连接管理器:

动态方法

  1. 使用执行 SQL 任务检索变量以启动 for 循环。 (批次大小、开始、结束)
  2. 添加一个for/foreach
  3. 在循环中添加数据流任务,从循环中传入参数。 (您可以使用表达式 属性. 将 parameters/expressions 传递给数据流中的子进程)
  4. 根据 for 循环中的参数,使用数据流任务中的源获取数据。
  5. 使用基于循环参数的动态名称写入目标 (Excel/CSV)。