导出到文件时8192对文本列的限制?

时间:2011-08-02 18:38:32

标签: sql-server sql-server-2008 ssms sqlcmd

我查看this问题基本相同,但OP接受'使用其他工具'作为答案。基本上,我试图将数据从表导出到分隔文件,但由于8192字符限制,输出文本被截断。我找不到任何有效的方法(至少对我而言)。

如果SSMSsqlcmd(不确定此限制是否也适用于此。我现在正在尝试)是我唯一的选择,有没有办法解决此限制并转储文本宽度较高的列?

1 个答案:

答案 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。