首页 > 解决方案 > 可以使用 Where 子句进行拆分,批量拆分和导出表

问题描述

我有一张看起来像这样的桌子。

ID  Project Type    Time
1   A       Start    1:00
1   A       End      1:10
1   B       Start    2:00
2   B       End      2:10
2   B       Start    2:30
2   B       End      2:45
3   C       End      3:00
3   D       Start    3:10
4   D       End      3:20
4   E       Start    1200

我想知道如何通过在提交的 ID 上使用 Where 子句将其导出到 4 个单独的平面文件(CSV 或 TXT)中。我想循环遍历表中的所有记录并按 ID 过滤。我在下面编写了一些 SQL,但这缺少一些东西。

DECLARE @CursorTestID INT = 1;
DECLARE @RunningTotal BIGINT = 0;
DECLARE @RowCnt BIGINT = 0;

-- get a count of total rows to process 
SELECT @RowCnt = COUNT(0) FROM dbo.mytable1;
--print(@RowCnt) 

WHILE @CursorTestID <= @RowCnt
BEGIN

   select * from mytable1 
       where ID = (SELECT DISTINCT ID FROM mytable1) as table
   SET @CursorTestID = @CursorTestID + 1 

END

我想最终得到 4 个平面文件,基于 4 个不同的 ID。它也不必优雅或快速。我只是想知道这个概念是否可行。我无权访问 SSIS。

感谢所有看到这个的人。

标签: sqlsql-server

解决方案


您可以尝试使用 MOD 运算符 (%),它为您提供除法的整数余数。那么WHERE id % 4 = 0这将是您的第一次通过,WHERE id % 4 = 1将是您的第二次通过,等等。应该导致“相当”均匀的分布。


推荐阅读