对我来说,创建一个循环并计算数据量然后查询前N个段或其他内容的包将会更复杂.
相反,我只是创建一个包含9个连接管理器的包.一个到您的数据数据库(源),然后是8个相同的平面文件连接管理器,但使用FileName1,Filename2等模式.定义第一个FFCM后,只需复制,粘贴和编辑实际文件名.
将数据流任务拖到控制流上并将其连接为OLE/ADO/ODBC源.使用查询,不要选择表,因为您需要对数据进行分区.我假设你的底层RDBMS支持ROW_NUMBER()函数的概念.您的源查询将是
SELECT
MT.*
, (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) % 8 AS bucket
FROM
MyTable AS MT;
Run Code Online (Sandbox Code Playgroud)
该查询将拉回所有数据,并从1中分配一个单调递增的数字,ROWCOUNT然后我们将模数(除数后的余数)运算符应用于.通过将生成的值修改为8,可以保证我们只能获得0到7的值,包括端点.
你可能会开始对这里使用的不同数字基数(基数0,基数1)感到不安,我知道我是.
将您的源连接到条件分割.使用该bucket列将数据分段为不同的流.我建议您将存储桶1映射到文件1,存储桶2映射到文件2 ...最后使用存储桶0映射到文件8.这样,我只需处理端点对齐,而不是一切都是台阶.
将每个流连接到一个平面文件目的地,繁荣就是炸药.