0
我看了this這個問題基本上是一樣的,但OP接受'使用其他工具'作爲答案。基本上,我試圖將數據從表中導出到分隔文件,但由於8192字符限制,輸出文本被截斷。我無法找到任何有效的方法(至少對我而言)。8192導出到文件時對文本列的限制?
如果SSMS
和sqlcmd
(不知道是否該限制適用於這一點。我想此刻)是我唯一的選擇,是有辦法解決這一限制,並傾倒更高寬度的文本列?
我看了this這個問題基本上是一樣的,但OP接受'使用其他工具'作爲答案。基本上,我試圖將數據從表中導出到分隔文件,但由於8192字符限制,輸出文本被截斷。我無法找到任何有效的方法(至少對我而言)。8192導出到文件時對文本列的限制?
如果SSMS
和sqlcmd
(不知道是否該限制適用於這一點。我想此刻)是我唯一的選擇,是有辦法解決這一限制,並傾倒更高寬度的文本列?
您是否考慮過使用簡單的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的任何答案,我會回到這裏。
+1 - PowerShell可能是這樣做的方式。 – JNK
+1謝謝。我接受了這個解決方案,但是請你給我一個例子,說明你使用PowerShell腳本是什麼意思?整個表格非常大,所以我在'#TEMP'表格中創建一些數字並將它們連接到原始表格以獲得結果集。 – Legend
@Legend我已經用VBScript中的解決方案更新了答案(我知道,*不寒而慄*)。 –