SQL Server: удаление разрывов строк при экспорте данных в CSV-файл с помощью утилиты группового экспорта - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть таблица, которую мне нужно экспортировать в CSV-файл. В этой таблице есть поле xml, в котором могут быть разрывы строк, которые я должен удалить. Я использую утилиту bcp для экспорта данных с сервера Sql в файл csv.

Это структура таблицы:

ID int
CODE varchar(20)
XML_DATA xml

Это команда, которую я использую:

bcp "SELECT ID, CODE, replace(convert(nvarchar(max), XML_DATA), CHAR(13)+CHAR(10), ' ') as XML_DATA FROM MYDB.dbo.MyTable" queryout C:\output.csv -c -t0x1F -T -S "10.10.10.28"

По некоторым причинам выходной файл все еще содержит разрывы строк. Но если я выполню тот же запрос на SQL Server для записи с разрывом строки, вывод будет правильным (разрывы строки удалены):

SELECT
    ID, 
    CODE, 
    replace(convert(nvarchar(max), XML_DATA), CHAR(13)+CHAR(10), ' ') as XML_DATA
FROM MYDB.dbo.MyTable
WHERE ID = 1099; -- record with a line break in the XML_DATA field

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 02 апреля 2019

Решено заменить эту строку

replace(convert(nvarchar(max), XML_DATA), CHAR(13)+CHAR(10), ' ') as XML_DATA

на эту

replace(replace(convert(nvarchar(max), XML_DATA), CHAR(13), ' '), CHAR(10), ' ') as XML_DATA

Также я хотел бы отметить, что Sql Server Management Studio по умолчанию не включает символы CLRF при копировании / вставкеиз результата запроса необходимо явно включить параметр сохранения символов CLRF и перезапустить SQL Server: предварительный CLRF в результате запроса Sql Server Management Studio .Это приводило меня в замешательство ^ _ ^

...