Я решил свою проблему. Одна строка BCP, а также еще немного кода для
получение столбцов.
Если кому-то интересно, вот полный код:
ОБЪЯВИТЬ @csvFileName varchar (50)
ОБЪЯВИТЬ @SelectOut varchar (8000)
ОБЪЯВИТЬ @sql varchar (8000)
ЗАЯВИТЬ @sqlLine varchar (8000)
SET @ sql = 'ВЫБЕРИТЕ DISTINCT приведения (u.pin как varchar (50)) pin, приведения (u.firstName как varchar (50)) firstname,
приведение (u.lastName как varchar (50)) фамилия, приведение (wc.name как varchar (50)) имя,
replace (convert (varchar (50), tw.dateTimeFrom, 103), '' / '', ''. '') + '' '' +
convert (nvarchar, tw.dateTimeFrom, 8) dateTimeFrom, replace (convert (varchar (50), tw.dateTimeTo, 103), '' / '', ''. '') + '' '' '+
convert (nvarchar, tw.dateTimeTo, 8) dateTimeTo
FROM TA_WhcAssigned tw
INNER JOIN TA_Whc wc
ON tw.whcid = wc.id
INNER JOIN пользователи u
ON u.pin = tw.pin
ВНУТРЕННЕЕ ПРИСОЕДИНЕНИЕ
ON da.pin = u.pin
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Отделы d
ON da.departmentId = d.parent
ГДЕ (год (tw.dateTimeFrom) = 2019 или год (tw.dateTimeFrom) = 2018) "'
SET @sqlLine = ЗАМЕНА (ЗАМЕНА (@ sql, CHAR (13), ''), CHAR (10), '')
SET @csvFileName = '"D: \ csv Files \' + CAST (год (SYSDATETIME ()) как VARCHAR) + CAST (месяц (SYSDATETIME ()) как VARCHAR) +
CAST (день (SYSDATETIME ()) как VARCHAR) + 'IninUsers.csv "'
SET @SelectOut = «BCP» выбрать «Pin», «Имя», «Фамилия», «Имя», «Дата от», «Дата до» объединение всех '+ @sqlLine +' queryout '+ @csvFileName +' -c -t, -T -S "'+ @@ servername +'" -d "BoneIDa2" '
EXEC xp_cmdshell @SelectOut
Единственная проблема, которая остается, - создать значения через запятую csv
- так это UTF-8, а не MS-DOS. Потому что у меня есть специальные символы, которые представлены неправильно.