SQL记录拆分
|
2026 华为OD机试真题 7月1日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
某分布式数据库系统需要将 SQL 操作日志拆分到多个文件中,现给定一组 SQL 语句输入(数组格式),请按要求将 SQL 语句拆分到不同文件中并返回拆分后的文件数量。拆分规则如下:
- 单个数组成员的 SQL 语句(可能包含多条,按
;分隔)按同一行完整保存,不可跨文件拆分,且同一行的语句必须在同一个文件中。 - 部分语句带事务标签
[Tn](n为正整数),如[T1]A;相同事务标签的 SQL 语句必须保存于同一文件中。 - 当单个文件保存的行数超出限制时,需要新建文件;按语句组首次出现的行号顺序处理,优先放入当前文件,超出限制则新建文件;
- 特殊场景约束:若语句 A 与语句 B 必须同文件,语句 B 与语句 C 必须同文件,则语句 A、B、C 必须在同一文件(约束传递性)。约束合并后语句组计数即便超过限制也必须放在同一文件;
- SQL 数组为空时返回 0。
输入描述
参数1:单个文件限定可保存的最大 SQL 语句行数 split_line;
参数2:SQL 语句数组 sql_text,每个数组成员可能包含多条 SQL 语句,用符号 ; 分隔;
输出描述
SQL 语句数组按规则拆分后的文件个数。
补充说明
split_line取值范围[1, 10000],无效值返回 0;sql_text每行最多 1000 字符,总语句最多 100000 条;- 事务标签的范围
[1, 1000]; - 最后一条语句可以没有分号结尾;
- 空语句(仅含分号)按 1 行计算。
示例1
输入
3,["[T1]A;[T2]B;","[T1]C;"]
输出
1
说明
- 语句
[T1]A和[T2]B共享 1 行,必须同文件;[T1]A和[T1]C同属T1事务,必须同文件;- 传递约束下三条语句同属一组,数组成员下标
{0,1}共 2 行,不超过3,故 1 个文件。
示例2
输入
2,["[T1]A;","[T2]B;","[T1]C;","[T2]D;"]
输出
2
说明
T1事务包含A和C,数组成员下标{0,2}占 2 行;T2事务包含B和D,数组成
订阅专栏 解锁全文

381

被折叠的 条评论
为什么被折叠?



