sqlcmd - как обойти ограничение длины столбца без пустых мест?
Я пытаюсь использовать sqlcmd на машине windows под управлением SQL Server 2005 для записи запроса в csv-файл. Параметры командной строки, которые мы обычно используем:
-l 60 -t 300 -r 1 -b -W -h -1
однако столбцы усекаются на 256 байтах. В попытке обойти это, я попытался использовать эту опцию командной строки вместо-W:
-y 8000
это захватывает все поля, но проблема с этим методом заключается в том, что файл всплывает с чуть более 1 Мб до около 200 Мб из-за все дополнительное пространство (я понимаю, что 8000, вероятно, излишне, но это, вероятно, должно быть не менее 4000, и в настоящее время я работаю только с небольшим подмножеством данных). Опция-W обычно устраняет все это дополнительное пространство, но когда я пытаюсь использовать их вместе, это говорит мне, что они взаимоисключающие.
есть ли способ получить sqlcmd вокруг этого предела, или кто-нибудь знает, если другая программа (например, bcp или osql) сделает это легче?
Edit: Вот фрагменты кода, которые мы используем, чтобы получить усеченное поле (аналогичный код используется для группы полей):
SELECT ALIASES.AliasList as complianceAliases,
...
LEFT OUTER JOIN (Select M1.ID, M1.LIST_ID,stuff((SELECT '{|}' + isnull(Content2,'')+' '+isnull(Content3,'')+' '+isnull(Content4,'')+' '+isnull(Content5,'')+' '+isnull(Content6,'')+' '+isnull(Content7,'')
FROM fs_HOST3_TEST_web.ISI_APP_COMP_MULTI M2 with (nolock)
WHERE M1.LIST_ID = M2.LIST_ID and M1.ID = M2.ID and M1.TYPE = M2.TYPE
FOR XML PATH('')
),1,1,'') as AliasList
FROM fs_HOST3_TEST_web.ISI_APP_COMP_MULTI M1 with (nolock)
WHERE M1.LIST_ID = 2001 AND M1.TYPE = 'Aliases'
GROUP BY m1.list_id,m1.ID,m1.Type) as ALIASES
ON ALIASES.LIST_ID = PAIR.COMP_LIST_ID AND ALIASES.ID = PAIR.COMP_ID
1 ответов
Я решил это, используя аргумент "- y0". Он все еще оставил кучу пробелов, но похоже, что он только дошел до конца самого длинного фрагмента данных в каждом поле.
затем я запустил вывод через программу, которая удалила повторяющиеся пробелы и решила все проблемы.