2011-08-02 22 views
0

我看了this這個問題基本上是一樣的,但OP接受'使用其他工具'作爲答案。基本上,我試圖將數據從表中導出到分隔文件,但由於8192字符限制,輸出文本被截斷。我無法找到任何有效的方法(至少對我而言)。8192導出到文件時對文本列的限制?

如果SSMSsqlcmd(不知道是否該限制適用於這一點。我想此刻)是我唯一的選擇,是有辦法解決這一限制,並傾倒更高寬度的文本列?

回答

2

您是否考慮過使用簡單的PowerShell腳本或使用C#的命令行應用程序?如果它可以SELECT所有的數據,那麼它當然應該能夠將它全部寫入到一個文件中。

編輯 2011-08-03

我無法得到使用PowerShell或SQLCMD這方面的工作。前者似乎將輸出縮小爲4000個字符,後者縮小爲256個字節。然而,我的好朋友VBScript再次證明,新的和閃亮的並不總是最好的......代碼編寫起來更乏味,但它起作用。保存爲.vbs文件,對第2,3和6行進行相應的更改(如果需要更多列,對數據進行轉換,使用不同的分隔符等,則需要9)。

set conn = createobject("ADODB.Connection") 
conn.open "provider=SQLOLEDB.1;data source=.;user id=user;password=pass;" 
set rs = conn.execute("SELECT VarcharMaxCol FROM dbo.TableName") 

set fso = createobject("Scripting.FileSystemObject") 
set f = fso.CreateTextFile("c:\path\from_vbs.csv", true) 

do while not rs.eof 
    f.writeline vbCrLf & rs(0) 
    rs.movenext 
loop 

rs.close : set rs = nothing 
conn.close : set conn = nothing 
f.close : set f = nothing 
set fso = nothing 

如果我從我的PowerShell專家朋友那裏得到關於他們如何處理> 4K的任何答案,我會回到這裏。

+0

+1 - PowerShell可能是這樣做的方式。 – JNK

+0

+1謝謝。我接受了這個解決方案,但是請你給我一個例子,說明你使用PowerShell腳本是什麼意思?整個表格非常大,所以我在'#TEMP'表格中創建一些數字並將它們連接到原始表格以獲得結果集。 – Legend

+0

@Legend我已經用VBScript中的解決方案更新了答案(我知道,*不寒而慄*)。 –

相關問題