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

Откуда:
Сообщений: 73
Всем привет
может, кто подскажет правильный ключ для выгрузки данных в файл так, чтобы выборка нормально разбивалась по полям в EXCEL
использую два найденных скрипта:
DECLARE @cmd1 nchar(255)
select @cmd1 = 'bcp "SELECT database_id AS IdDB, name AS NameDB FROM sys.databases" queryout "C:\REPORT\report.csv" -c -t; -S "SERVERNAME" -U MyUserName -P UserPassword -w' 
EXEC  master..xp_cmdshell @cmd1
и второй:
DECLARE @cmd2 nchar(255)
select @cmd2 = 'osql -S SQLDATAHANDLER -E -s; -w2048 -Q "SELECT database_id AS IdDB, name AS NameDB FROM sys.databases" -b -o  C:\REPORT\report.csv'
EXEC master..xp_cmdshell @cmd2, no_output

У самого разобраться с ключами не вышло:
Первый скрипт отлично отображает символы кириллицы из БД на англоязычном серваке, второй, в отличие от первого, результат отлично разбивает по полям в EXCEL, но выводит лишнюю информацию: кучу дефисов сверху и количество выведенных строк
6 май 17, 09:06    [20462193]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
aleks2
Guest
1. Кнопка "Сделать фсе как я хачу" никак не выйдет из стадии альфа-тестирования.
2. Шоб BCP.exe поняло ваши хотелки - нужен файл форматирования
https://docs.microsoft.com/en-us/sql/relational-databases/import-export/format-files-for-importing-or-exporting-data-sql-server
https://msdn.microsoft.com/ru-ru/library/ms191516.aspx
3. BCP может облегчить вашу участь - создать формат-файл "по образцу". Если образец выходного файла есть.
6 май 17, 10:32    [20462260]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
rnkguest
Guest
SSIS?
6 май 17, 12:59    [20462407]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
rnkguest,

не подходит, так как я в курсоре ищу манагеров, для которых есть данные, а потом для каждого из них (и только для них) формирую файл с названием
'C:\REPORT\report_'+@ManagerName+'.csv'

Ну и это, естественно в процедуре...
6 май 17, 13:20    [20462433]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
komrad
Member

Откуда:
Сообщений: 5245
Aleksey br,

мой Excel2013 прекрасно открывает файл, созданный первой командой

на вашем месте я бы сделал простой SSRS отчет и дал бы его манагерам
или как вариант - автоматическая рассылка отчета по почте подписчикам с аттачем в нужном формате
6 май 17, 19:05    [20462720]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
komrad,

Открыть- открывает. Но дескриптор не разбивает по полям .
7 май 17, 14:58    [20463788]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
komrad
Member

Откуда:
Сообщений: 5245
Aleksey br,

у тебя не так?

К сообщению приложен файл. Размер - 21Kb
7 май 17, 15:14    [20463793]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
komrad,

Вау! Как интересно! У меня так красиво открывает только онлайн эксель в гугле.
В остальных случаях - вся строка в первой ячейке через разделитель(
7 май 17, 16:53    [20463925]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
komrad
Member

Откуда:
Сообщений: 5245
Aleksey br
komrad,

Вау! Как интересно! У меня так красиво открывает только онлайн эксель в гугле.
В остальных случаях - вся строка в первой ячейке через разделитель(


похоже, что это прикол Экселя
попробуй вручную в нем открыть файл и выбрать нужный тип разделителя
велика вероятность, что потом он и сам будет открывать csv-файлы правильно
7 май 17, 18:06    [20464043]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
komrad,

Проверил - кака была, как есть((
Боюсь я не заставлю ~50 менеджеров открывать файл, а потом его редактировать.
11 май 17, 09:37    [20471240]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
komrad
Member

Откуда:
Сообщений: 5245
Aleksey br
komrad,

Проверил - кака была, как есть((
Боюсь я не заставлю ~50 менеджеров открывать файл, а потом его редактировать.


попробуй без ключа "-t;"
тогда файл должен быть tab-delimited - может так его ваш Эксель распознает нормально?
11 май 17, 09:46    [20471286]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Aleksey br,

символ разделителя задаётся в региональных настройках и не открывает "красиво" из-за того что не совпадает с установленным
11 май 17, 09:49    [20471297]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
несколько раз поменял разделители на конечных компах и на сервере SQL - как не работало - так и не работает(((
11 май 17, 12:14    [20472097]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
aleks2
Guest
Aleksey br
несколько раз поменял разделители на конечных компах и на сервере SQL - как не работало - так и не работает(((


Страдалец, личико открой - файл покажи.

"№";"Номер полиса";"Страховая программа";"Колво застрахованных";"Страхователь";"ФИО застрахованных";"Страна";"Дата оформления";"Дата начала действия полиса";"Дата окончания действия полиса";"Название риска";"Страховая сумма";"Валюта";"Страховая премия в валюте";"Страховая премия в Руб";"Путевка MoreTravel";"доп. условия"
1;"CAS-EMT-030488";"B2";2;"KOS***** ****";"GR***** TAT***** (12.05.19**) ";"GREECE, SCHENGEN";03.04.2017;11.05.2017;18.05.2017;"Медицинские и иные расходы";35000,00;"EUR";3,84;229,67;"GR70511002";""
2;"CAS-EMT-030488";"B2";2;"KOS***** ****";"GR***** TAT**** (12.05.19**) ";"GREECE, SCHENGEN";03.04.2017;11.05.2017;18.05.2017;"Отказ от поездки";566,52;"EUR";20,00;1196,21;"GR70511002";""

Вот пример, который открывается везде.
11 май 17, 12:21    [20472128]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
CREATE TABLE [dbo].[TempState]([ID] [int] NOT NULL,[StateName] [nvarchar](255) NULL)
insert [TempState] Values (0,'Положительный результат'),(1,'Отрицательный результат')

declare @cmd1 nchar(500)
declare @cmd2 nchar(500)
select @cmd1 = 'bcp "use acdc_data SELECT * from [TempState]" queryout c:\mail\State1.csv -t;  -c -T -w' 
select @cmd2 = 'bcp "SELECT database_id AS IdDB, name AS NameDB FROM sys.databases" queryout c:\mail\State2.csv -t; -c -T ' 
EXEC  master..xp_cmdshell @cmd1, no_output
EXEC  master..xp_cmdshell @cmd2, no_output

А вот файл State2.csv (приложить второй файл не позволено) открывается как положено
1master
2tempdb
3model
4msdb
5DWDiagnostics
6DWConfiguration
7DWQueue


К сообщению приложен файл (State1.csv - 110bytes) cкачать
12 май 17, 12:05    [20475675]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
УРА!!!!
Получиловсь вывести
DECLARE @Sql VARCHAR(4000),
@result int
SET @Sql='sqlcmd -S SQLDATAHANDLER -d ACDC_Data -E -h -1 -Q "set nocount on;select Winner Inc SELECT * from [ClientCodeState]" -o c:\mail\myoutput2.csv -u -W  -s "' + CHAR(9)+'"' SET NOCOUNT ON
EXEC @result = master..xp_cmdshell @Sql, no_output
12 май 17, 15:01    [20476696]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
aleks2
Guest
Шаман живет в глухом краю.

К сообщению приложен файл. Размер - 100Kb
12 май 17, 15:15    [20476744]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в файл  [new]
aleks2
Guest
Найдите ОДНО отличие.

К сообщению приложен файл. Размер - 139Kb
12 май 17, 15:16    [20476750]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить