sql - 可以使用 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。
感谢所有看到这个的人。
解决方案
您可以尝试使用 MOD 运算符 (%),它为您提供除法的整数余数。那么WHERE id % 4 = 0
这将是您的第一次通过,WHERE id % 4 = 1
将是您的第二次通过,等等。应该导致“相当”均匀的分布。
推荐阅读
- sql - BigQuery 语法错误:预期关键字 JOIN 但得到“)”
- javascript - 如何解决错误无法读取未定义的属性“通道”
- typescript - Vue 3 + Typescript + JSX 和 img loading={"lazy"} 给出错误:'ElementAttrs 类型上不存在属性'loading'
' - css - css inset 未在 Safari 中呈现
- amazon-web-services - 在使用按需容量的 DynamoDB 中,可用容量何时下降?
- javascript - 如果在 React/ES6 中相同,则仅显示单个项目
- ios - 从 iOS 在 iOS Apple App Store 上提交评论时的 UI 组件名称
- python - 如何在数据框列中反转 pd.to_datetime?
- android - 我在哪里可以在 Android Studio 中指定自定义 Android 模拟器的物理尺寸(宽度、高度、深度)?
- java - JavaIO Stream 返回不同的位