我有一个大约 156K 的数据表,我想制作 6 个数据表并将记录划分给每个数据表,例如 table1 将保存 0 到 30k 的行,表 2 将保存 30k1 到 60k 的行,依此类推。
大表按从 0 到 14 的数字列排序
关于如何在不循环的情况下执行此操作的任何建议?
您可以使用 LINQ GroupBy
:
测试数据:
Dim tbl1 = New DataTable
tbl1.Columns.Add("ID", GetType(Int32))
tbl1.Columns.Add("Text", GetType(String))
For rowIndex As Int32 = 1 To 156000
tbl1.Rows.Add(rowIndex, "Row " & rowIndex)
Next
拆分为多个表:
Dim tableCount = 6
Dim divisor = tbl1.Rows.Count / tableCount ' needed to identify each group '
Dim tables() As DataTable = tbl1.AsEnumerable().
Select(Function(r, i) New With {.Row = r, .Index = i}).
GroupBy(Function(x) Math.Floor(x.Index / divisor)).
Select(Function(g) g.Select(Function(x) x.Row).CopyToDataTable()).
ToArray()
请注意,由于 156000 / 6 = 26000,这会将它们拆分为每个包含 26000 行的表。
在数据库级别上做吗?
从您的表中选择到其他人然后删除原始表。