8192 ограничение на текстовый столбец при экспорте в файл? - PullRequest
0 голосов
/ 02 августа 2011

Я посмотрел на этот вопрос, который, по сути, тот же, но ОП принял «использование других инструментов» в качестве ответа.В основном я пытаюсь экспортировать данные из таблицы в файл с разделителями, но из-за ограничения в 8192 символа выводимый текст усекается.Я не смог найти хороших подходов, которые бы сработали (по крайней мере, для меня).

Если SSMS и sqlcmd (не уверен, применимо ли ограничение к этому также.Мои единственные варианты, есть ли способ обойти это ограничение и вывести текстовые столбцы большей ширины?

1 Ответ

2 голосов
/ 02 августа 2011

Рассматривали ли вы использование простого сценария 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.

...