Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 экранировать ; при экспорте в csv  [new]
Если
Member

Откуда:
Сообщений: 58
Добрый.

Есть некая часть запроса
select '<a HREF="'+picture+'"><img alt="" src="'+picture+'" style="width: 10%;"> </a>' into final from table

которая выдает примерно такое

<a HREF="http://xxx.jpg"><img alt="" src="http://xxx.jpg" style="width: 10%;"> </a>

далее я запускаю
bcp "SELECT * FROM final" queryout D:\Documents\file.csv -T -t; -r\n -c -C1251


Файл успешно формируется, но вместо одной колонки получается 2:
<a HREF="http://xxx.jpg"><img alt="" src="http://xxx.jpg" style="width: 10%
и
"> </a>.

Понятно, что ";" является разделителем колонок в csv, поэтому он и переносит часть данных на вторую колонку.

Что можно сделать?
Пробовал экранировать ; вот так ";" - не помогло. Его надо как-то по другому экранировать?

Заранее спасибо.
21 окт 17, 22:23    [20889102]     Ответить | Цитировать Сообщить модератору
 Re: экранировать ; при экспорте в csv  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Если
Понятно, что ";" является разделителем колонок в csv
CSV - Comma Separated Values

что просили -t; то и получили, чем не подходит -t, ?
если уж так хочется создайте файл формата.
21 окт 17, 23:15    [20889227]     Ответить | Цитировать Сообщить модератору
 Re: экранировать ; при экспорте в csv  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Если
но вместо одной колонки получается 2:
Понятно, что ";" является разделителем колонок в csv, поэтому он и переносит часть данных на вторую колонку.
Что можно сделать?

Ничего не нужно делать. У Вас есть текстовый файл, в нем непонятные символы. Среди них есть ";", который используется в HTML. Вы где-то открываете CSV файл - и он показывает Вам, что для ПО, в котором Вы открываете, знак ";" является разделителем на колонки, Вы видите это в 2 разных колонках вместо одной. И что?
Смысл этого текстового файла - не смотреть его в колонках, а взять оттуда строку целиком и куда-то в HTTP запихнуть "as is". И не нужно пугаться лишних колонок.
21 окт 17, 23:17    [20889229]     Ответить | Цитировать Сообщить модератору
 Re: экранировать ; при экспорте в csv  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Если,
Если нужно, чтобы в тексте было "width: 10%;" - ну так оставьте. Пусть себе лежит. Все равно Вы этот CSV обратно в базу данных в таблицу с разными колонками загружать не станете. А прочитаете в каком-нибудь PHP и выдаете склеенный ответ клиенту в браузер.
21 окт 17, 23:19    [20889233]     Ответить | Цитировать Сообщить модератору
 Re: экранировать ; при экспорте в csv  [new]
Если
Member

Откуда:
Сообщений: 58
Дедушка
Если
Понятно, что ";" является разделителем колонок в csv
CSV - Comma Separated Values

что просили -t; то и получили, чем не подходит -t, ?
если уж так хочется создайте файл формата.


Спасибо. Отличная мысль. Окаывается csv можно делать и с разделителем табуляцией -t/t
27 окт 17, 23:52    [20908184]     Ответить | Цитировать Сообщить модератору
 Re: экранировать ; при экспорте в csv  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
Если
Дедушка
пропущено...
CSV - Comma Separated Values

что просили -t; то и получили, чем не подходит -t, ?
если уж так хочется создайте файл формата.


Спасибо. Отличная мысль. Окаывается csv можно делать и с разделителем табуляцией -t/t
Можно было сделать вывод одной колонки, конкатенацией столбцов, и не придумывать разделители.
28 окт 17, 01:21    [20908352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить