繁体   English   中英

从不可解析的表SQL Server查询和导出

[英]Query and export from unsortable table SQL Server

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

我的问题是:我有一张约有1000万条银行交易记录的表格。 它没有PK,也没有排序为任何列。

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

我有一些想法:

  • 创建800个800台ATM表(只是一个想法,我知道它是愚蠢的)并从主表发送数据到它每天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)

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

一旦表具有主键,您就可以对其进行排序,并选择具有可预测结果的200K行的块/页。

我不确定我的解决方案。 但你可以参考并尝试一下:

select top 1000000 *, row_number() over (order by (select null)) from tblEJTransactions

以上查询返回排序列表。

然后你可以使用Linq来获得结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM