2015-10-19 118 views
0

我正在運行一個查詢,該查詢爲我提供了超過8百萬條記錄。我已將結果導出到.csv文件,但文件太大而無法處理(8GB ...)。SQL Server - 將大量記錄導出到多個csv文件

我試圖做的是結果CSV拆分成多個文件,但有一個條件:

有一列名爲「定位器」,它代表的ID。我爲了設法組我的記錄有那種結果:

Locator | Name | LastName 
___________________________ 
ABCDEFH | Foo | Oof 
ABCDEFH | Foo2 | Oof2 
ABCDEFH | Foo3 | Oof3 
TUVWXYZ | Mark | Mark 
TUVWXYZ | Mark2| Mark2 
...  | ... | ... 

所以我想要做的基本上是分割記錄分裂集團...難道是可以做到的那?

編輯:這裏是一個與NTILE查詢:

with locator as 
(
    select distinct 
    pnrlctrnum, 
    NTILE(8) OVER(ORDER BY pnrlctrnum) as Tile_Num 

from ttddocseg, ttddoc, ttdhdr 
where ttddocseg.tdtrxnum = ttddoc.tdtrxnum and ttdhdr.tdtrxnum = ttddoc.tdtrxnum 
) 
select ttdhdr.pnrlctrnum, ttddoc.*, ttddocseg.* 
from ttddocseg, ttddoc, ttdhdr 
inner join locator on locator.pnrlctrnum = ttdhdr.pnrlctrnum 
where Tile_num = 7 and ttddocseg.tdtrxnum = ttddoc.tdtrxnum and ttdhdr.tdtrxnum = ttddoc.tdtrxnum 

回答

0

您可以使用NTILE函數生成組組合。這將確保這些組保持在一起,然後您可以將您的導出分割成多個您喜歡的分區。

更改thrirdnumber號碼以更改您想要的分組數量,然後您可以將其集成到您的導出過程中,然而您喜歡。

with locator as 
(
    select ditinct 
    Locator, 
    NTILE(4) OVER(ORDER BY Locator) as Tile_Num 
    from tbl 
) 
select * 
from tbl 
inner join locator on locator.Locator = tbl.Locator 
where Tile_num = 3 
+0

好的,謝謝你的回答!當我查詢3張桌子時,你能看看我更新的問題嗎?這將是非常好的你! – Traffy

+0

你能解釋一下這個問題是什麼嗎?你的查詢看起來對我來說是正確的,因爲它應該加入你的其他表格,並且仍然給你一個你可以用來導出的tile數字 –

相關問題