[英]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.