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

У меня есть запрос типа

SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER ON;
SET ARITHABORT ON;
SET CONCAT_NULL_YIELDS_NULL ON;
SET ANSI_PADDING ON;
SET ANSI_WARNINGS ON;
SET NUMERIC_ROUNDABORT OFF;
SET NOCOUNT ON;
--use SAAudioitems;

SELECT 
DISTINCT p.sku as sku,
p.idProduct,
RTRIM(LTRIM(REPLACE(REPLACE(p.description,',',','), CHAR(13) + CHAR(10), ' '))) as description,
RTRIM(LTRIM(REPLACE(REPLACE(p.details,',',','), CHAR(13) + CHAR(10), ' '))) as details,
RTRIM(LTRIM(REPLACE(REPLACE(CONVERT(VARCHAR(MAX), IsNull(p.introduction, '')),',',','), CHAR(13) + CHAR(10), ' '))) as introduction,

FROM products as p


И я пытаюсь вывести данные в CVS

sqlcmd -S hollywood\SQLEXPRESS -d PARAMAUNT-E -f 65001 -i "C:\Users\tatum\Documents\SQL\products.sql" -o "C:\Users\tatum\Downloads\products.csv" -y 0 -s","

Но почему-то я получаю некоторые записи с переносом строки в details или introduction в CSV.
Тоесть REPLACE (field, CHAR(13) + CHAR(10), ' ') невсегда срабатывает.

Спасибо за помощь.
14 фев 16, 22:39    [18815872]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Channing Tatum Actor
Тоесть REPLACE (field, CHAR(13) + CHAR(10), ' ') невсегда срабатывает.

это команда срабатывает всегда.
Не всегда именно эти два символа идут подряд.
14 фев 16, 22:53    [18815896]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
Channing Tatum Actor
Guest
А как гарантированно заменить все непечатаемые символы, которые могут прозводить перенос строк?
Реплейсить CHAR(13) и CHAR(10) отдельности?
14 фев 16, 22:58    [18815908]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Channing Tatum Actor
Реплейсить CHAR(13) и CHAR(10) отдельности?

реплейсить _все символы_, которые вы считаете непечатными
Непонятно только, зачем они тогда были внесены в таблицу
14 фев 16, 23:10    [18815929]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
Channing Tatum Actor
Guest
По отдельности помогло, спасибо.
Вот, я тормоз, мог бы и сам догадаться :(


Вносили скорее всего каким-то копипастом, бог его знает базу готовую прислали. Мне просто надо csv для импорта сделать.
14 фев 16, 23:32    [18815963]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51228
Channing Tatum Actor
А как гарантированно заменить все непечатаемые символы, которые могут прозводить перенос строк?

Не надо их заменять. Строки в CSV обрамляются кавычками. В этом случае абсолютно всё равно какие символы в них есть (за исключением других кавычек, которые надо удваивать).
14 фев 16, 23:33    [18815965]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Я один вижу вот это:
REPLACE(p.description,',',',')
???
Раскройте мне глаза на тайный смысл замены запятой на запятую!
15 фев 16, 11:35    [18817011]     Ответить | Цитировать Сообщить модератору
 Re: Удалить все непечатаемые символы при генерации csv файла из SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Channing Tatum Actor,
а SSIS использовать - никак?
15 фев 16, 12:13    [18817291]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить