c# - 从不可排序的表 SQL Server 中查询和导出

标签 c# sql .net sql-server-2008

首先我很抱歉我的英语不好,不是我的语言。

我的问题是:我有一张表,其中包含大约 1000 万条银行交易记录。它没有 PK,也没有按任何列排序。

我的工作是创建一个页面来过滤并将其导出到 csv。但导出 Csv 的行数限制约为 20 万条记录。

我有一些想法:

  • 创建包含 800 个 ATM 的 800 个表(只是一个想法,我知道这很愚蠢)并且每天从主表向它发送数据 1 次 => 导出到 800 个 csv 文件

  • 每次使用 Linq 获取 100k 条记录,然后下次,我跳过这些。但是当 Skip 命令需要 OrderBy 时我卡住了,我得到了 OutOfMemoryException

    db.tblEJTransactions.OrderBy(u => u.Id).Take(100000).ToList()
    

任何人都可以帮助我,欢迎任何想法(我的老板说我可以使用任何东西包括创建数百个表,使用 Nosql ...)

最佳答案

如果您的表中没有主键,请添加一个。 最简单也是最容易的是添加一个 int IDENTITY 列。

ALTER TABLE dbo.T 
ADD ID int NOT NULL IDENTITY (1, 1)

ALTER TABLE dbo.T 
ADD CONSTRAINT PK_T PRIMARY KEY CLUSTERED (ID)

如果您无法更改原始表格,请创建一个副本。

一旦表格有了主键,您就可以按它排序并选择具有可预测结果的 20 万行的 block /页面。

关于c# - 从不可排序的表 SQL Server 中查询和导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220961/

相关文章:

javascript - 删除不起作用(保存后无法删除数据)

c# - 无法将委托(delegate)转换为泛型类型 T

python - Python 参数化 MySQL 查询中的转义反斜杠

php - Laravel Eloquent 获取按天分组的结果

c# - 查询 "Memory"的 LINQ

c# - 编译 LambdaExpression 时参数不在范围内

c# - ORM架构

c# - system.io.filenotfoundexception 发布时

c# - 如何使子对象知道它在其父对象上分配的属性名称?

sql - 在 oracle 中对时间序列表进行非规范化和密集化