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

Откуда:
Сообщений: 2657
Скажите пожалуйста, как можно наилучшим образом выгрузить данные из динамического запроса,
который возвращает 6000 колонок?

Заранее благодарен.
16 окт 19, 00:12    [21995037]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
vah
из динамического запроса, который возвращает 6000 колонок?
А что говорит автор сего сумеречного творения?

З.Ы. А, да, чем не устраивает любой способ, который позволяет выгрузить данные из динамического запроса, в котором от 1 до 5999 колонок?

Сообщение было отредактировано: 16 окт 19, 01:04
16 окт 19, 01:02    [21995045]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4213
vah
... данные из динамического запроса,
который возвращает 6000 колонок?

В Oracle 12 количество колонок (полей) в запросе специально ограничено 1000-ю.
Наверно намаялись с энтузиастами и их хотелками.
16 окт 19, 08:25    [21995100]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
L_argo
Member

Откуда:
Сообщений: 1217
6000, Карл !!! Шедеврально.
16 окт 19, 08:52    [21995110]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
vah
Member

Откуда:
Сообщений: 2657
Гавриленко Сергей Алексеевич,

на самом деле чуть больше 6000 )
16 окт 19, 08:56    [21995111]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1613
L_argo
6000, Карл !!! Шедеврально.

vah
на самом деле чуть больше 6000 )

Тогда, это чуть больше чем 'Шедеврально.'
16 окт 19, 09:04    [21995120]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
vah
Member

Откуда:
Сообщений: 2657
4d_monster
L_argo
6000, Карл !!! Шедеврально.

vah
на самом деле чуть больше 6000 )

Тогда, это чуть больше чем 'Шедеврально.'


на самом деле сейчас данные выгружаются на клиенте в циклах, но работает это ооочень долго. хочу переделать это чтоб данные готовились на серваке.
16 окт 19, 09:14    [21995127]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4213
vah
... данные выгружаются на клиенте ...

А кто клиент?
Хотелось бы взглянуть на человека, способного анализировать данные по 6000 полей.
Похоже вы разбаловали вашего заказчика...
Стоит один раз не послать нахрен типа, сказавшего "А вот хочу, чтобы видеть одновременно ...сот полей!" как болезнь начинает прогрессировать.
В вашем случае это крайняя степень запущенности.
Что будете делать, когда он захочет миллион?
16 окт 19, 10:01    [21995182]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
vah
Member

Откуда:
Сообщений: 2657
SQL2008
vah
... данные выгружаются на клиенте ...

А кто клиент?
Хотелось бы взглянуть на человека, способного анализировать данные по 6000 полей.
Похоже вы разбаловали вашего заказчика...
Стоит один раз не послать нахрен типа, сказавшего "А вот хочу, чтобы видеть одновременно ...сот полей!" как болезнь начинает прогрессировать.
В вашем случае это крайняя степень запущенности.
Что будете делать, когда он захочет миллион?


не, там фишка в том, что этот Excel потом загружается в какую-то систему, которая анализирует это
16 окт 19, 10:05    [21995189]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4213
vah
SQL2008
пропущено...

А кто клиент?
Хотелось бы взглянуть на человека, способного анализировать данные по 6000 полей.
Похоже вы разбаловали вашего заказчика...
Стоит один раз не послать нахрен типа, сказавшего "А вот хочу, чтобы видеть одновременно ...сот полей!" как болезнь начинает прогрессировать.
В вашем случае это крайняя степень запущенности.
Что будете делать, когда он захочет миллион?


не, там фишка в том, что этот Excel потом загружается в какую-то систему, которая анализирует это

Хорошо, но зачем в Excel-то??? Есть много гораздо более удобных и компактных форматов.
Заканчивая тем, что не использовать Excel как промежуточное звено.
Почему нельзя сразу передать данные?
16 окт 19, 10:08    [21995193]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
vah
Member

Откуда:
Сообщений: 2657
SQL2008
vah
пропущено...


не, там фишка в том, что этот Excel потом загружается в какую-то систему, которая анализирует это

Хорошо, но зачем в Excel-то??? Есть много гораздо более удобных и компактных форматов.
Заканчивая тем, что не использовать Excel как промежуточное звено.
Почему нельзя сразу передать данные?


может XML предложить?
16 окт 19, 10:10    [21995195]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
SQL2008
Хотелось бы взглянуть на человека, способного анализировать данные по 6000 полей.
6000 записей в таблице тоже неудобно пролистывать, но в БД иногда встречается и больше :-)
Скорее, этот эксельный лист никто никогда не читал, он используется как источник данных для расчётов.

Конечно, можно сказать, "переносите всё в оракл/сиквел/етц":
SQL2008
Стоит один раз не послать нахрен типа, сказавшего "А вот хочу, чтобы видеть одновременно ...сот полей!" как болезнь начинает прогрессировать.
Но компания хочет использовать эти активы, и не понимает, сколько денег она получит за переписывание эксельной базы, например, на сиквел и веб-приложение.

Соответственно, услышав "послать нахрен", они могут найти другого подрядчика, который просто хочет денег, а не "учить", и выполнит этот простенький заказ без посылания клиента.

Я тоже делал такие выгрузки для клиента, сотни полей, миллионы строк, и некие расчёты (по множеству связанных эксельных файлов). Платят деньги - выгружаю, не отказываюсь. Переписывать за стоимость выгрузки не подряжаюсь.
16 окт 19, 10:12    [21995196]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
SQL2008
vah
не, там фишка в том, что этот Excel потом загружается в какую-то систему, которая анализирует это

Хорошо, но зачем в Excel-то??? Есть много гораздо более удобных и компактных форматов.
Заканчивая тем, что не использовать Excel как промежуточное звено.
Почему нельзя сразу передать данные?
Потому что эти файлы - результат нескольких лет работы специалистов, наваявших эти расчёты.
Не было у них других инструментов.
Они забивали данные руками, потом стали выгружать из каких то источников.
XML ещё не существовало, когда они это делали.
16 окт 19, 10:14    [21995197]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4213
alexeyvg
Я тоже делал такие выгрузки для клиента, сотни полей, миллионы строк, и некие расчёты (по множеству связанных эксельных файлов). Платят деньги - выгружаю, не отказываюсь. Переписывать за стоимость выгрузки не подряжаюсь.

С этим трудно не согласиться!
Если заказчик готов оплачивать такую работу, то почему нет?
Насчет "послать нахрен" имелось в виду мягко уговорить клиента, что это неразумно выгружать так много полей в Excel.
16 окт 19, 10:30    [21995225]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4213
alexeyvg
Потому что эти файлы - результат нескольких лет работы специалистов, наваявших эти расчёты.
Не было у них других инструментов.
Они забивали данные руками, потом стали выгружать из каких то источников.
XML ещё не существовало, когда они это делали.

Когда я начинал работать в IЕ на одном промышленном комбинате, то там забивали данные в SuperCalc, выгружали их в DBF-формате на дискеты 5.25 и вручную (я был транспортным протоколом) неслись в другое управление и там загружались в другую систему учета.
Хотя 10 мегабитная сеть на коаксиальных кабелях работала.

Когда настроил пересылку и загрузку данных по сети, то общее их настроение было "А что? Так можно было что-ли?"

Это я к тому, что традиция традицией, но если есть возможность, то почему не улучшить систему?
P.S. Сорри за использование архаичных и забытых терминов.
16 окт 19, 10:37    [21995232]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4213
SQL2008
работать в IЕ

работать в IT
16 окт 19, 10:38    [21995233]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
Владислав Колосов
Member

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

наилучшим будет написать на VBA программу выгрузки.
16 окт 19, 12:15    [21995343]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
SQL2008
Насчет "послать нахрен" имелось в виду мягко уговорить клиента, что это неразумно выгружать так много полей в Excel.
Не, ну это понятно, если выбор делается при специалисте, то его долг - сказать, как правильно.
Но обычно 6000 полей выгружают, потому что уже так работает...
SQL2008
Это я к тому, что традиция традицией, но если есть возможность, то почему не улучшить систему?
Согласен, но не всегда составные части бизнес-процессов функционируют в одном проекте, подразделении, иногда даже это разные компании. И поменять становится непросто.
Опять же, я говорил об "активах" - бизнес вполне обоснованно спросит: "сколько нам за это будет баксов, если мы поменяем систему расчётов на Эксельных файлах на более современную?"
И нужно суметь ответить на этот вопрос, назвать цифру, и обосновать. А если вы ответите "ну надо заменить потому что это безобразие", то такой ответ может не сработать.
Владислав Колосов
наилучшим будет написать на VBA программу выгрузки.
Так у них сейчас так и делается, но это не устраивает, потому что медленно работает.
16 окт 19, 17:41    [21995783]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
Владислав Колосов
Member

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

в таком случае я не понял - о каких циклах говорилось. Можно циклы гонять по строкам, а можно и по 100-200 столбцов за раз.
16 окт 19, 18:20    [21995802]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
Владислав Колосов
alexeyvg,

в таком случае я не понял - о каких циклах говорилось. Можно циклы гонять по строкам, а можно и по 100-200 столбцов за раз.
Ну, это я не знаю, про детали реализации.
Наверняка можно оптимизировать, всё можно оптимизировать :-)

Вообще, есть же готовый клиент, для выгрузки в эксель - SSIS.
Может, он будет быстро это делать.

Или, как вариант, рассмотреть прямое формирование файла эксель (помня, что этот файл - обычный xml, и есть готовые решения такого рода).
Это точно будет самым быстрым вариантом, но писать и поддерживать такое, конечно, сложно, и выгружать напрямую следует только при требованиях экстремальной производительности, типа, 1 файл на 1 Гб каждую минуту.
16 окт 19, 19:31    [21995828]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4740
vah
Скажите пожалуйста, как можно наилучшим образом выгрузить данные из динамического запроса,
который возвращает 6000 колонок?

Заранее благодарен.


Смотрите в сторону OpenXML
17 окт 19, 14:15    [21996553]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
andy st
Member

Откуда:
Сообщений: 797
vah,
Чисто технически в xlsx используя драйвер Microsoft.ACE.OLEDB.12.0 и возможность выборки в OPENROWSET записи листа из заданного диапазона можно обходить ограничение в 255 столбиков для доступа к частям листа Excel

для вывода первых шести столбиков
select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=d:\xls\TEST.xlsx', 'SELECT * FROM [Лист1$A1:F2]')


для вывода столбиков 9998 - 10001
select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=d:\xls\TEST.xlsx', 'SELECT * FROM [Лист1$NTN1:NTQ2]')


точно также работает update
другая проблема - реализация автоматизации доступа к частям файла в общем виде запросто можно будет номинировать на награду "извращение года"
25 окт 19, 09:20    [22002231]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в Excel 6000 колонок  [new]
Alexander Us
Member

Откуда:
Сообщений: 1130
vah
Скажите пожалуйста, как можно наилучшим образом выгрузить данные из динамического запроса,
который возвращает 6000 колонок?

Заранее благодарен.


стелайте с# или vb проект в visual studio,
приукутите библиотеку для записи и чтения Excel файлов EPPlus
(можно через NuGet)

-бесплатно
-много примеров
-много возможностей
-расширяемо (я делал с ней даже кастомизорованные пивоты)
25 окт 19, 09:38    [22002246]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить