0

我有一个大约 156K 的数据表,我想制作 6 个数据表并将记录划分给每个数据表,例如 table1 将保存 0 到 30k 的行,表 2 将保存 30k1 到 60k 的行,依此类推。

大表按从 0 到 14 的数字列排序

关于如何在不循环的情况下执行此操作的任何建议?

4

2 回答 2

1

您可以使用 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 行的表。

于 2012-08-18T21:37:08.237 回答
0

在数据库级别上做吗?

从您的表中选择到其他人然后删除原始表。

于 2012-08-18T21:35:18.803 回答