Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
AndreiRantsevich
Member

Откуда: Минск
Сообщений: 773
Добрый день,
я разрабатываю дополнение (add-in) к SQL Server Management Studio, его обсуждение идёт в этой теме:
SSMSBoost - бесплатный add-in для SSMS: доводка уровня удобства SSMS до рейтинга "ух-ты !"

Начиная с последней версии я добавил, с моей точки зрения, очень полезную функциональность: перенос данных из грида в Excel-документ. Отличается она от встроенного copy-paste вот чем:

  • генерируется MS-XML spreadsheet: "родной" документ, который сохраняется во временную папку на диск и без дополнительных действий и лишних вопросов открывается Excel-ем
  • Сохраняется информация о типах данных: Excel не пытается превращать ваши строки в числа или числа в даты: числа остаются числами, строки строками и т.д.
  • если у вас результат с несколькими таблицами, то их можно все за раз перенести в 1 документ - они отображаются как отдельные Worksheets (кажется это в русском переводе Excel "Листы")

    У меня есть просьба: если у вас в процессе использования возникнут какие-нибудь проблемы, то напишите пожалуйста сюда. Я конечно перед релизом тестирую, насколько это возможно, и хотя функциональность уже почти месяц как опубликована, пока никто сообщений об ошибках не присылал. Меня это и радует и и немного беспокоит. Всё-таки типов данных много - может кто-то наткнётся на какой-то тип, который неправильно переводится в тип данных Excel-я. Их там всего 5 поддерживается, а в SQL Servere - их штук 15.
    В приложении картинка с краткой демонстрацией использования и как это выглядит в Excel-е (в данном случае 2013).

    Для тех кто хочет знать больше: просто в add-in-е реализован гибкий скриптер ResultsGrid-а. И эта функциональность просто один из шаблонов. Вы можете сами добавить и свой шаблон. В наборе стандартных идут также шаблоны для генерации из содержимого ResultsGrid-а например:
  • XML документа
  • Пар поле:значение
  • HTML таблицы
    и много ещё чего... Посмотрите.



    ----------------------------------------------------------------------------------------------
    Разработчик SSMSBoost add-ina для SQL Server Management Studio.
    Не всё потеряно - и в SSMS можно удобно писать код ! :)

    К сообщению приложен файл. Размер - 79Kb
  • 12 ноя 12, 07:58    [13456603]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    Андрей, если у меня есть decimal такого типа:
    90.00
    90.00
    90.1555
    


    To w Excel:
    <Row><Cell><Data ss:Type="Number">90.00</Data></Cell></Row>
    <Row><Cell><Data ss:Type="Number">90.00</Data></Cell></Row>
    <Row><Cell><Data ss:Type="Number">90.16</Data></Cell></Row>
    


    1)тип данных должен быть
    <NumberFormat ss:Format="0.0000"/>
    
    (определить кол-во цифр после запятой)
    2)округление
      <Row><Cell><Data ss:Type="Number">90.155000000000001</Data></Cell></Row>
    
    12 ноя 12, 12:11    [13457751]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    rralf
    Member

    Откуда:
    Сообщений: 27
    AndreiRantsevich, добрый день.

    А почему бы не сделать "нормальное" копирование decimal-значений из таблички (result grid) для вставки в excel?
    (аналог "right-click"->"copy with headers" -> "paste into excel")? :)

    просто сохранять файлик, а потом его открывать excel-ем не всегда удобно, особенно если сводишь вместе результаты 2х - 3х "select"-ов
    13 ноя 12, 02:18    [13462376]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    dalex1973,


    dalex1973
    Андрей, если у меня есть decimal такого типа:
    90.00
    90.00
    90.1555
    


    Спасибо !
    Я пока накапливаю сообщения и потом посмотрю всё вместе. Что-то на этой неделе меня основной работой придавило :)
    13 ноя 12, 14:28    [13465196]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    rralf
    AndreiRantsevich, добрый день.

    А почему бы не сделать "нормальное" копирование decimal-значений из таблички (result grid) для вставки в excel?
    (аналог "right-click"->"copy with headers" -> "paste into excel")? :)

    просто сохранять файлик, а потом его открывать excel-ем не всегда удобно, особенно если сводишь вместе результаты 2х - 3х "select"-ов


    Что-бы правильно копировать через clipboard, надо разобраться будет с форматами, которые тот-же Excel понимает + как-то это обыграть в шаблонах (выставление формата clipboard-а при копировании). Я над этим уже думал. Может сделаем через пару версий. Пока вы можете сохранять в файлы выделеные фрагменты из грида. Но всё равно спасибо - вы подкрепили мои мысли в этом направлении.
    13 ноя 12, 14:32    [13465239]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    rralf
    Member

    Откуда:
    Сообщений: 27
    AndreiRantsevich
    Что-бы правильно копировать через clipboard, надо разобраться будет с форматами, которые тот-же Excel понимает + как-то это обыграть в шаблонах (выставление формата clipboard-а при копировании). Я над этим уже думал. Может сделаем через пару версий. Пока вы можете сохранять в файлы выделеные фрагменты из грида. Но всё равно спасибо - вы подкрепили мои мысли в этом направлении.


    Добрый день.

    Спасибо.
    Пока что пользуемся заменой "." на "," в excel-е или приведением numeric к float в sql

    ps
    как идея по поводу форматов. если поле numeric(decimal/money), то приводить к формату записи, соответствующему текущей локали пользователя.
    13 ноя 12, 16:38    [13466621]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    rralf
    ps
    как идея по поводу форматов. если поле numeric(decimal/money), то приводить к формату записи, соответствующему текущей локали пользователя.


    Я думаю что там будет передача именно в виде numeric. В этом то вся и соль, что-бы не зависить от locale сервера и машины. Передача данных идёт в binary виде. Сейчас так при передачи данных через файл. Там стандартно-оговоренный формат. Осталось повторить для clipboard-а.
    13 ноя 12, 16:42    [13466637]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    dalex1973
    Андрей, если у меня есть decimal такого типа:
    90.00
    90.00
    90.1555
    


    Готовим релиз - бета будет скорее всего в понедельник.
    В процессе подготовки нашёл в чём причина найденной вами ошибки: нужно в настройках для всех шаблонов в разделе "Data Formatters" для Currency и Double указать "G" вместо "F".

    К сообщению приложен файл. Размер - 15Kb
    3 дек 12, 04:58    [13566210]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    Сон Веры Павловны
    Member

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

    Не так давно мне понадобилось перекинуть в эксель выборку объёмом ~30 тыс. строк (не спрашивайте, зачем это было нужно - потребовали, и всё). Попробовал функционал SSMSBoost - и моего терпения хватило на ожидание в течение 10 минут. Всё-таки выгрузка в excel spreadsheet идет очень медленно и долго.
    В итоге я просто сохранил выборку штатным образом в виде tab-delimited file, обработал её парой регэксов, чтобы подогнать формат к локали 1049, и открыл в экселе - так получилось быстрее. Собственно, вопрос: нельзя ли в SSMSBoost к имеющимся вариантам выгрузки добавить тот же tab-delimited file, но с учетом либо заданного в set language, либо, на худой конец, системной локали? (SSMS Results Grid при выводе и выгрузке fixed-point numbers и дат не обращает внимания ни на то, ни на другое).
    3 дек 12, 06:24    [13566231]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    Сон Веры Павловны
    AndreiRantsevich,

    Не так давно мне понадобилось перекинуть в эксель выборку объёмом ~30 тыс. строк (не спрашивайте, зачем это было нужно - потребовали, и всё). Попробовал функционал SSMSBoost - и моего терпения хватило на ожидание в течение 10 минут. Всё-таки выгрузка в excel spreadsheet идет очень медленно и долго.
    В итоге я просто сохранил выборку штатным образом в виде tab-delimited file, обработал её парой регэксов, чтобы подогнать формат к локали 1049, и открыл в экселе - так получилось быстрее. Собственно, вопрос: нельзя ли в SSMSBoost к имеющимся вариантам выгрузки добавить тот же tab-delimited file, но с учетом либо заданного в set language, либо, на худой конец, системной локали? (SSMS Results Grid при выводе и выгрузке fixed-point numbers и дат не обращает внимания ни на то, ни на другое).

    tab-delimited можно добавить прямо сейчас, но это не ускорит работу скриптера. Нам надо постараться оптимизоровать его работу. Я на самом деле тоже заметил, что работает он не так-же быстро, как родное копирование данных и в принципе догадываюсь почему. К тому же, у нас появились новые знания о самом гриде. Одним словом - спасибо за замечание. Я проверю.
    3 дек 12, 06:31    [13566234]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    AndreiRantsevich
    Готовим релиз - бета будет скорее всего в понедельник.
    В процессе подготовки нашёл в чём причина найденной вами ошибки: нужно в настройках для всех шаблонов в разделе "Data Formatters" для Currency и Double указать "G" вместо "F".

    Да, при такиx установкаx "содержание" совпадает.
    Однако записывает как ss:Type="String"
    3 дек 12, 11:36    [13567314]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    dalex1973
    AndreiRantsevich
    Готовим релиз - бета будет скорее всего в понедельник.
    В процессе подготовки нашёл в чём причина найденной вами ошибки: нужно в настройках для всех шаблонов в разделе "Data Formatters" для Currency и Double указать "G" вместо "F".

    Да, при такиx установкаx "содержание" совпадает.
    Однако записывает как ss:Type="String"

    "по хорошему" должно быть:
    <Cell><Data ss:Type="Number">0.029411</Data></Cell>

    Возможно, вы нашли какой-то тип, который у нас не распознаётся и попадает в "else"-ветку как строковый. Я как раз за такими случаями и охочусь. Если у вас есть время, сделайте пожалуйста
    select * into test_table from .... (ваш запрос).
    И посмотрите потом точный тип данных у созданной таблицы в колонке, где вместо Number скриптуется String. Пришлите результаты по почте. Спасибо !
    3 дек 12, 14:35    [13568601]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    AndreiRantsevich,

    AndreiRantsevich
    И посмотрите потом точный тип данных у созданной таблицы в колонке, где вместо Number скриптуется String. Пришлите результаты по почте. Спасибо !

    Вынужден извиниться - ошибка была на нашей стороне (sql_variant неправильно возвращался).
    3 дек 12, 16:12    [13569513]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    dalex1973
    AndreiRantsevich,

    AndreiRantsevich
    И посмотрите потом точный тип данных у созданной таблицы в колонке, где вместо Number скриптуется String. Пришлите результаты по почте. Спасибо !

    Вынужден извиниться - ошибка была на нашей стороне (sql_variant неправильно возвращался).


    фух - спасибо ! :)
    3 дек 12, 16:36    [13569726]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    Закачали бета-версию 2.7. Ссылки на installs тут:
    http://www.ssmsboost.com/social/yaf_postsm214_v2-7Beta.aspx

    Буду благодарен за помощь в проверке (внутреннюю проверку мы уже завершили).
    3 дек 12, 16:39    [13569743]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    AndreiRantsevich
    Закачали бета-версию 2.7. Ссылки на installs тут:
    http://www.ssmsboost.com/social/yaf_postsm214_v2-7Beta.aspx

    Буду благодарен за помощь в проверке (внутреннюю проверку мы уже завершили).

    Первые впечатления о посике: ищет шустро. Был неправ о необxодисмости.
    Неплоxо бы пару вещей добавить:
  • оператор отрицания (например чтобы найти NOT NULL)
  • ESCAPE -символ(искать * и ?)
  • выбор регистра для поиска
  • выделить найденные записи ,чтобы потом заскриптовать либо повторно искать в найденном. Сейчас можно только ячейки выбрать
  • секционирование + multi-threading. Эx, понеслась фантазия ;-)

    Интерсно, почему вы пошли не в сторону Regex`a а wildcard-ов? Программерам вроде это легче.
  • 3 дек 12, 18:19    [13570655]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    dalex1973
    AndreiRantsevich
    Закачали бета-версию 2.7. Ссылки на installs тут:
    http://www.ssmsboost.com/social/yaf_postsm214_v2-7Beta.aspx

    Буду благодарен за помощь в проверке (внутреннюю проверку мы уже завершили).

    Первые впечатления о посике: ищет шустро. Был неправ о необxодисмости.
    Неплоxо бы пару вещей добавить:
  • оператор отрицания (например чтобы найти NOT NULL)
  • ESCAPE -символ(искать * и ?)
  • выбор регистра для поиска
  • выделить найденные записи ,чтобы потом заскриптовать либо повторно искать в найденном. Сейчас можно только ячейки выбрать
  • секционирование + multi-threading. Эx, понеслась фантазия ;-)

    Интерсно, почему вы пошли не в сторону Regex`a а wildcard-ов? Программерам вроде это легче.


  • Спасибо за все предложения. Давайте ещё ! :)
    Почему сейчас не "сразу всё": мы развиваем проект, как Intel делает свои процессоры, по принципу "тик-так". Что-то придумали, сделали рабочий вариант выкатили - "тик". Теперь ждём предложений и в следующей версии сделаем "так".
    О Regex думали, но, согласитесь, не все SQL программисты знают что это такое. Поэтому в этой версии базовая функциональность, но в следующей скроее всего сделаем.
    3 дек 12, 18:28    [13570716]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    Понятно.
    Если будет что по гриду,напишу.
    Остальное - в Вашем главном топике.
    3 дек 12, 18:39    [13570778]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    Сон Веры Павловны
    Не так давно мне понадобилось перекинуть в эксель выборку объёмом ~30 тыс. строк (не спрашивайте, зачем это было нужно - потребовали, и всё). Попробовал функционал SSMSBoost - и моего терпения хватило на ожидание в течение 10 минут. Всё-таки выгрузка в excel spreadsheet идет очень медленно и долго.


    В новой версии 2.8 ускорили скриптинг в 5 раз !

    dalex1973
    Неплоxо бы пару вещей добавить:
  • ESCAPE -символ(искать * и ?)
  • выбор регистра для поиска
  • выделить найденные записи ,чтобы потом заскриптовать либо повторно искать в найденном. Сейчас можно только ячейки выбрать

  • Вот то что я процитировал выше - добавили.

    Пока что закачал как бета версию. Если в след. 24 часа сообщений об ошибках не поступит, то просто перенесу их в релиз:
    Вот ссылки:

    www.ssmsboost.com/beta/SSMSBoostInstaller2008_2.8.4737.11144.msi
    www.ssmsboost.com/beta/SSMSBoostInstaller2012_2.8.4737.11343.msi
    20 дек 12, 10:38    [13658115]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    С географией не до конца понятно. Скриптует как текст
    SELECT * 
    FROM (
    VALUES 
    ('POINT (4.5628905395969772 52.72207400498187)')) AS vtable 
    ([(No column name)])
    


    Почему бы не:
    geography::Point(Lat,Long,104001);
    
    21 дек 12, 00:19    [13663322]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    С escape-символами тоже не совсем понятно:
    SELECT '?aaaa'
    UNION ALL
    SELECT 'aaa?'
    


    Пробуем искать:
    *\?
    

    Находит оба, хотя оканчивается на ? только номер 2.
    Та же ситуация с поиском по началу: \?*
    21 дек 12, 00:36    [13663353]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    Выделение результатов поиска работает на ура. Но при попытке заскриптовать, каждая ячейка скриптуется отдельным SELECT`ом. Как можно соединить?
    21 дек 12, 00:52    [13663378]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    Обновили бету:
    http://www.ssmsboost.com/social/yaf_postsm226_v2-8-Beta.aspx#post226

    http://www.ssmsboost.com/beta/SSMSBoostInstaller2012_2.8.4742.31068.msi
    http://www.ssmsboost.com/beta/SSMSBoostInstaller2008_2.8.4742.31031.msi


    Всех с наступающими праздниками !
    27 дек 12, 18:20    [13696801]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    AndreiRantsevich
    Member

    Откуда: Минск
    Сообщений: 773
    dalex1973
    Выделение результатов поиска работает на ура. Но при попытке заскриптовать, каждая ячейка скриптуется отдельным SELECT`ом. Как можно соединить?

    Пока это "by design" т.к. каждое выделение это отдельный блок. Мы подумаем на будующее, может добавим какой-то новый параметр при скриптовании.


    dalex1973
    С escape-символами тоже не совсем понятно:
    SELECT '?aaaa'
    UNION ALL
    SELECT 'aaa?'
    



    Пробуем искать:
    *\?
    


    Находит оба, хотя оканчивается на ? только номер 2.
    Та же ситуация с поиском по началу: \?*


    Ищется не полное соответствие, а вхождение в любом месте. Улучшить ? Как назвать опцию ?


    dalex1973
    Почему бы не:
    geography::Point(Lat,Long,104001);
    


    Для этого придётся поддержать каждый spatial type оттдельно, что немного загромоздит количество опций в шаблонах. Но кажется всё к этому идёт :)
    Я записал, подумаем как сделать что бы было и удобно и просто.
    27 дек 12, 18:28    [13696821]     Ответить | Цитировать Сообщить модератору
     Re: Перенос данных из SSMS ResultsGrid в Excel: просьба проверить на разных конфигурациях  [new]
    dalex1973
    Member

    Откуда: Польша
    Сообщений: 287
    AndreiRantsevich
    Ищется не полное соответствие, а вхождение в любом месте. Улучшить ? Как назвать опцию ?

    Поиск должен быть как в TSQL :
    WHERE a.col LIKE '%!?' ESCAPE '!'
    

    если в конце нет процента, то ищем концовку
    AndreiRantsevich
    dalex1973
    Почему бы не:
    geography::Point(Lat,Long,104001);
    


    Для этого придётся поддержать каждый spatial type оттдельно, что немного загромоздит количество опций в шаблонах. Но кажется всё к этому идёт :)
    Я записал, подумаем как сделать что бы было и удобно и просто.

    Имхо усложнять нет смысла, ибо 99% употребления spatial - это координаты(точки). Предлагаю сделать POINT по умолчанию, а если на оф. форуме начнут кричать ("в чём я лично сомневаюсь"), то добавлять по мере надобности.
    28 дек 12, 17:37    [13702035]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
    Все форумы / Microsoft SQL Server Ответить