我查看this问题基本相同,但OP接受'使用其他工具'作为答案。基本上,我试图将数据从表导出到分隔文件,但由于8192字符限制,输出文本被截断。我找不到任何有效的方法(至少对我而言)。
如果SSMS
和sqlcmd
(不确定此限制是否也适用于此。我现在正在尝试)是我唯一的选择,有没有办法解决此限制并转储文本宽度较高的列?
答案 0 :(得分: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 guru的朋友那里得到关于他们如何处理的答案,我会在这里回复> 4K。