PDA

View Full Version : Вопрос SQL программистам



Xorosho
03-25-2008, 03:40 PM
Можно ли из [stored procedure(SQL server2000)] создать [Excel file] и загнать туда ресультат [select statementa]?
пример кода пожалуйста если можно?
спасибо большое

Amerigo
03-25-2008, 04:35 PM
Можно ли из [stored procedure(SQL server2000)] создать [Excel file] и загнать туда ресультат [select statementa]?
пример кода пожалуйста если можно?
спасибо большое
use DTS

YUM
03-26-2008, 07:22 AM
а через MSQERY от EXCEL'я залезть в SQL базенку не проще?;) Запросиком.

Xorosho
03-26-2008, 08:31 AM
есть [web application] написанное на [C#] из него вызывается [stored procedure] в которой делаются определенные [selection], можно ли прямо в етой [procedure create Excel file, insert in it selection result and save it]

crazy-mike
03-26-2008, 10:16 AM
Можно ли из [stored procedure(SQL server2000)] создать [Excel file] и загнать туда ресультат [select statementa]?
пример кода пожалуйста если можно?
спасибо большое
На самом деле вопрос звучит довольно "архаично" - хотя бы потому что web-based applications могут возвращать "результаты запроса" в формате XML (в формате приложения - фактически). ;) Аналог библиотеки libxml и DOM-интерфейсы в последнее время входят в shell-ы всех интегригрованных пакетов. ;)

Sixteen
03-26-2008, 10:21 AM
есть [web application] написанное на [C#] из него вызывается [stored procedure] в которой делаются определенные [selection], можно ли прямо в етой [procedure create Excel file, insert in it selection result and save it]

простым языком говоря, етого сделать нельзя прям в [stored procedure].
но ето можно легко сделать прям в Ц#.
ето так же можно сделать если переделать процедуру на ехтендед .НЕТ
процедуру.

(бурчит - не подпускать к компам безграматных, не падпускать на километр ёмаё, не падпускать блин с автоматами собаками и охраной)

смешно
03-26-2008, 10:47 AM
Можно ли из [stored procedure(SQL server2000)] создать [Excel file] и загнать туда ресультат [select statementa]?
пример кода пожалуйста если можно?
спасибо большое

http://codebetter.com/blogs/raymond.lewallen/archive/2005/05/04/62781.aspx

Note: DTS packages are the preferred way of handling this type of data transfer, especially when scheduled, so don't be hasty to implement this without looking at a DTS solution first. That being said, I'm sure there are those of you out there who can find usefulness out of this script.

crazy-mike
03-26-2008, 11:03 AM
http://codebetter.com/blogs/raymond.lewallen/archive/2005/05/04/62781.aspx

:cool: В смысле Security - это не самое лучшее решение всё же. Определённые сомнения вызывает целесообразность установки Excel на каждом клиентском компьютере (как и office). В google уже есть служба(бесплатная) для создания и хранения документов (и обеспечения доступа к ним из интернета). Для "корпоративных сетей с веб-интерфейсом" доступ через Internet/Intranet различается только настройками безопасности при использовании внутренних подсетей и внешних адресов.
Я уже даже не хочу вспоминать о "шизофреническом" подходе в рамках SOAP...

Xorosho
03-26-2008, 12:24 PM
простым языком говоря, етого сделать нельзя прям в [stored procedure].
но ето можно легко сделать прям в Ц#.
ето так же можно сделать если переделать процедуру на ехтендед .НЕТ
процедуру.

(бурчит - не подпускать к компам безграматных, не падпускать на километр ёмаё, не падпускать блин с автоматами собаками и охраной)

спасибо.

(бурчит - сколько граматных зануд развелось, как страшно жить)

Amerigo
03-26-2008, 12:35 PM
есть [web application] написанное на [C#] из него вызывается [stored procedure] в которой делаются определенные [selection], можно ли прямо в етой [procedure create Excel file, insert in it selection result and save it]

1) do a DTS package that does it (very simple)

2) make your stored procedure call that DTs; also very simple

Xorosho
03-26-2008, 12:38 PM
1) do a DTS package that does it (very simple)

2) make your stored procedure call that DTs; also very simple


Thank you

Xorosho
03-26-2008, 12:39 PM
простым языком говоря, етого сделать нельзя прям в [stored procedure].
но ето можно легко сделать прям в Ц#.
ето так же можно сделать если переделать процедуру на ехтендед .НЕТ
процедуру.

(бурчит - не подпускать к компам безграматных, не падпускать на километр ёмаё, не падпускать блин с автоматами собаками и охраной)

А вот скажите, вы таким грамотным родились уже? Или ето все же со временем приходит? :)

Sixteen
03-26-2008, 12:59 PM
если абстрагироваться от ЩЕБ Апп
то ДТС - самое простое решение чтобы просто добыть ехцел филе

Xorosho
03-26-2008, 01:16 PM
вообщем всем спасибо, особенно конструктивно побеседовавшим тут смешно и майку.
Зареклась задавать тут какие либо вопросы.

crazy-mike
03-26-2008, 01:32 PM
вообщем всем спасибо,

Там просто что-то одно лишнее - или SQL или Excel (именно это и "улыбнуло" на самом-то деле).
Использовать Excel в качестве "терминала" для SQL (обычно используют для этой роли "стандартный браузер") - это "нетрадиционно экстравагантная идея".

Alex_3112
03-26-2008, 01:40 PM
Там просто что-то одно лишнее - или SQL или Excel
А если задача стоит именно так, что на выходе должен получаться именно xls, а логика обязана храниться в SQL?

Xorosho
03-26-2008, 01:42 PM
Там просто что-то одно лишнее - или СЭЛ или Ехцел (именно это и "улыбнуло" на самом-то деле).
Использовать Ехцел в качестве "терминала" для СЭЛ (обычно используют для этой роли "стандартный браузер") - это "нетрадиционно экстравагантная идея".

господя из ничего раздули черте что...ничего там лишнего,
[t-sql] делает определенные [selection] из SQL сервера и надо ети [selection] засейвать на [C:\] где нибудь в [Excel] формате.
приплели тут браузери, женщины программисты..
короче спасибо за помощь

crazy-mike
03-26-2008, 01:45 PM
А если задача стоит именно так, что на выходе должен получаться именно xls, а логика обязана храниться в SQL?
Значит "постановщика задачи" желательно уволить и как можно быстрее пока он не нанёс ещё больший материальный ущерб...
Excel в роли "терминала для ввода данных" вообще-то является "архаичным средством". Excel в качестве "выходного терминала" (виртуального принтера) - тоже не имеет особого смысла - потому что есть очень много библиотек для генерирования документов в формате pdf. ;)

Amerigo
03-26-2008, 02:15 PM
вообщем всем спасибо, особенно конструктивно побеседовавшим тут смешно и майку.
Зареклась задавать тут какие либо вопросы.
don't pay any attention.
Is DTS installed on your server ?
Do you know how to use it ?

Монашка
03-26-2008, 02:17 PM
смешно и [crazy-mike], это ж вы над собой смеетесь и глумитесь, да показываете что умных мужчин на свете все меньше и меньше
успокойтесь пожалста!
нечего сказать по теме - проходите мимо
этот раздел не для бестолкового флуда

ваши посты будут удалены

Xorosho
03-26-2008, 02:19 PM
доньт паы аны аттентион.
Ис ДТС инсталлед он ёур сервер ?
До ёу кнощ хощ то усе ит ?

[sure] но я думала что есть какой то способ прямо в процедуре создать [excel file] без использования [DTS]
вы не против переити в личку?

crazy-mike
03-26-2008, 02:20 PM
Вообще пора переходит на ОДИН, ЕДИНЫЙ формат - XML.
У меня сейчас данные отображаются на карте города с использованием запросов к удалённым серверам и получением ответов в формате XML (а потом это всё вытаскивается внутри javaScript и перерисовывается без переобращения ко всей странице).
;)
XML именно потому и "рулит" - что позволяет не думать о "правах доступа к БД" , а просто писать thunking code для доступа к нужным данным...:bis:

смешно
03-26-2008, 02:33 PM
У меня сейчас данные отображаются на карте города с использованием запросов к удалённым серверам и получением ответов в формате XML (а потом это всё вытаскивается внутри javaScript и перерисовывается без переобращения ко всей странице).
;)
XML именно потому и "рулит" - что позволяет не думать о "правах доступа к БД" , а просто писать thunking code для доступа к нужным данным...:bis:


Здорово, а можешь мне в личку кинуть кусочек кода, для образовательных целей, плиз. :)

Amerigo
03-26-2008, 02:45 PM
[sure] но я думала что есть какой то способ прямо в процедуре создать [excel file] без использования [DTS]
вы не против переити в личку?
пожалуйста пишите.

если есть такое прямо в процедуре то я такого не знаю;
я бы сделал через ДТС, на мой взгляд - довольно просто;
и потом другому человеку будет понятно.

Alex_3112
03-26-2008, 03:14 PM
У меня сейчас данные отображаются на карте города с использованием запросов к удалённым серверам и получением ответов в формате XML (а потом это всё вытаскивается внутри javaScript и перерисовывается без переобращения ко всей странице).
;)
XML именно потому и "рулит" - что позволяет не думать о "правах доступа к БД" , а просто писать thunking code для доступа к нужным данным...:bis:
Во-первых эти сервера поддерживают такие запросы.
Во-вторых твоя логика сосредоточена на клиенте.

Что не далеко не всегда так бывает или дожно быть.

смешно
03-26-2008, 03:30 PM
Во-первых эти сервера поддерживают такие запросы.
Во-вторых твоя логика сосредоточена на клиенте.

Что не далеко не всегда так бывает или дожно быть.

Зачем на клиенте? это можно как угодно сгенерировать, на апликейшн сервере например. Да и работать будет во 100 раз быстрее и производительнее.

Alex_3112
03-26-2008, 05:04 PM
Зачем на клиенте? это можно как угодно сгенерировать, на апликейшн сервере например. Да и работать будет во 100 раз быстрее и производительнее.
Предположим, что бизнес-логика уже есть, и она вся в SQL. Переписывать все в client-server означает не только много работы, но и больший maintenance и возможность ошибок.

C SQL Server вопрос так обычно не стоит, а вот с mainframe - сплошь и рядом. Бизнесы упираются рогом, чтобы вся логика оставалась у них на Cobol-е.

смешно
03-27-2008, 09:22 AM
Предположим, что бизнес-логика уже есть, и она вся в SQL. Переписывать все в client-server означает не только много работы, но и больший maintenance и возможность ошибок.

C SQL Server вопрос так обычно не стоит, а вот с mainframe - сплошь и рядом. Бизнесы упираются рогом, чтобы вся логика оставалась у них на Cobol-е.

Да пусть будет где угодно. Весь кайф Ajax, что не надо перегружать всю страницу, а только отдельный кусочек(и), причём асинхронно. Oсобенно если большой обьём информации (Query, репорты).

Web pages, unlike native applications, are loosely coupled (http://en.wikipedia.org/wiki/Loose_coupling), meaning that the data they display are not tightly bound to data sources and must be first marshaled (set out in proper order) into an HTML page format before they can be presented to a user agent (http://en.wikipedia.org/wiki/User_agent) on the client machine. For this reason, web pages have to be re-loaded each time a user needs to view different datasets. By using the XMLHttpRequest object to request and return data without a re-load, a programmer bypasses this requirement and makes the loosely coupled web page behave much like a tightly coupled application, but with a more variable lag time for the data to pass through a longer "wire" to the remote web browser.

http://en.wikipedia.org/wiki/Ajax_%28programming%29

Sixteen
03-27-2008, 10:03 AM
А вот скажите, вы таким грамотным родились уже? Или ето все же со временем приходит? :)

я робот с юпитера ... мы с рождения такие, да ...
Америго дело говорит с [DTS]


а еше способ тупой но действенный

[
dim rs as new ADO.Recordset
dim c as new ADO.Connection

' connect to DB with c

rs.open c, SQL

'open file
dim fh as integer
fh = FreeFile
open "c:\file.csv" #fh

while not rs.eof
'tut pechatat' v file printom vse nuzhnye polja cherez zapjatuju
rs.moveNext
wend

close #fh
]

для етого нужен ВБА. ето можно сделать и на .НЕТ тожи
не ручаюсь за сынтах.

Xorosho
03-27-2008, 10:07 AM
я робот с юпитера ... мы с рождения такие, да ...
Америго дело говорит с [DTS]


а еше способ тупой но действенный

[
dim rs as new ADO.Recordset
dim c as new ADO.Connection

' connect to DB with c

rs.open c, SQL

'open file
dim fh as integer
fh = FreeFile
open "c:\file.csv" #fh

while not rs.eof
'tut pechatat' v file printom vse nuzhnye polja cherez zapjatuju
rs.moveNext
wend

close #fh
]

для етого нужен ВБА. ето можно сделать и на .НЕТ тожи
не ручаюсь за сынтах.


я уже нашла решение,
спасибо [any way]

Olezhik
03-27-2008, 01:10 PM
Можно ли из [stored procedure(SQL server2000)] создать [Excel file] и загнать туда ресультат [select statementa]?
пример кода пожалуйста если можно?
спасибо большое


DECLARE @cmd VARCHAR(2049)
SET @cmd = 'OSQL -SLOCALHOST -dPubs '
+ ' -Usa -Ppassword'
+ ' -Q"SELECT * FROM TABLENAME"'
+ ' -oc:\file.xls'
EXEC master..xp_cmdshell @cmd, NO_OUTPUT

Alex_3112
03-27-2008, 01:53 PM
Да пусть будет где угодно. Весь кайф Ajax, что не надо перегружать всю страницу, а только отдельный кусочек(и), причём асинхронно.
Мы о разном. В двух словах, Ajax - это "утолщение" клиента. А если все данные (репорт в Excel, например) генерируются на сервере в одну операцию, Ajax никак не поможет.

crazy-mike
03-28-2008, 03:04 AM
Мы о разном. В двух словах, Ajax - это "утолщение" клиента. А если все данные (репорт в Excel, например) генерируются на сервере в одну операцию, Ajax никак не поможет.
AJAX - это "утоньшение клиента" на самом деле (ему вообще ничего на компе кроме браузера не нужно). А Excel в самом деле понимает XML. И страничку из браузера можно сохранить в XML , а потом это открыть в Excel и пересохранить в XLS. А если вспомнить - что внутри макрокоманд Excel можно использовать обращения к функциям из своих собственных DLL (как и в макрокомандах Word)...
:cool: Ну Office - вообще явно лишний на клиентском компе....Да и SQL - это в какой-то мере Sex Query Language (это не "мачизм" - а просто констатация факта , что у SQL очень много недостатков. Идея реляционных СУБД только вначале выглядела "заманчиво". В первоначальных вариантах SQL индексов не было вообще к примеру (такая загадочная "эволюция" - SQL92,SQL93,SQL99. А ещё есть интересное понятие "машина баз данных" - в смысле архитектуры). А как только пришлось заниматься всем этим на уровне "больших приложений" и требовать от них "производительности" - то ...Кстати - загрузить в Excel таблицу из 15,000,000 строчек - это непередаваемое удовольствие!!!!!!! Сравнимое только с различением "формата хранения" и "формата загрузки" )...

Alex_3112
03-28-2008, 12:24 PM
AJAX - это "утоньшение клиента" на самом деле (ему вообще ничего на компе кроме браузера не нужно).
AJAX - это вовсе не наследник классической клиент-серверной архитектуры. Он возник на базе HTML и Javascript, так что по сранению с pure HTML это явное "утолщение".

А Excel в самом деле понимает XML. И страничку из браузера можно сохранить в XML , а потом это открыть в Excel и пересохранить в XLS.
Можно много чего сделать, даже всех за калькуляторы посадить. Но зачем, если есть готовый Excel?

Ну Office - вообще явно лишний на клиентском компе....
Это уже вопрос корпоративной политики - ставить MS Office или Open Office, например. Здесь на западе, MS Office - это де-факто стандарт.

Да и SQL - это в какой-то мере Sex Query Language (это не "мачизм" - а просто констатация факта , что у SQL очень много недостатков. Идея реляционных СУБД только вначале выглядела "заманчиво".
Лет десять назад говорили, что переход от реляционных к объектным БД скор и неизбежен. И что же - воз и ныне там.

Кстати - загрузить в Excel таблицу из 15,000,000 строчек - это непередаваемое удовольствие!!!!!!! Сравнимое только с различением "формата хранения" и "формата загрузки" )...
Ну такого, я надеюсь, никто в здравом уме делать не будет :)

crazy-mike
03-28-2008, 12:26 PM
Лет десять назад говорили, что переход от реляционных к объектным БД скор и неизбежен. И что же - воз и ныне там.

Просто AS/400 = это была система для умных нормальных людей а не для "юзеров" (в которых людей планомерно превращают маркетологи и рекламисты) :grum:

AJAX - это вовсе не наследник классической клиент-серверной архитектуры. Он возник на базе HTML и Javascript, так что по сранению с pure HTML это явное "утолщение".
AJAX = это совокупность подходов. Основная идея была создавать "безопасные" соединения по http на уже открытой странице для обмена данными с удалёнными системами (к которым как будто бы предоставляется доступ ) и с возможностью обновления контента на странице. Там дело не только в XMLHttpRequest. Кучу всего можно и через iframe делать и даже через формы с hidden-полями. Можно даже открыть окошко по window.open , в нём открыть другую страничку где-попало , получить из неё данные через ссылку window.opener и обновить контент окна opener с закрытием "окна с результатом запроса". ;) . Через XMLHttpRequest это делается намного проще (вспомогательная страница не нужна - но "на другом конце" всё равно нужен "источник ответа" ). :27: Это я к тому - что никакого "утолщения" не было. Наоборот - всё стало даже проще.
В смысле "настроек безопасности" SQL-сервер в этом случае очень сильно выигрывает (ему не надо "слушать внешние интерфейсы" - а только интерфейсы локальной подсети).

Sixteen
03-28-2008, 12:29 PM
ДЕЦЛАРЕ @цмд ВАРЧАР(2049)
СЕТ @цмд = ьОСЭЛ -СЛОЦАЛХОСТ -дПубс ь
+ ь -Уса -Ппассщордь
+ ь -Э"СЕЛЕЦТ * ФРОМ ТАБЛЕНАМЕ"ь
+ ь -оц:\филе.хлсь
ЕЪЕЦ мастер..хп_цмдшелл @цмд, НО_ОУТПУТ
фигасебе. алежег рулит

Xorosho
03-28-2008, 12:48 PM
ДЕЦЛАРЕ @цмд ВАРЧАР(2049)
СЕТ @цмд = ьОСЭЛ -СЛОЦАЛХОСТ -дПубс ь
+ ь -Уса -Ппассщордь
+ ь -Э"СЕЛЕЦТ * ФРОМ ТАБЛЕНАМЕ"ь
+ ь -оц:\филе.хлсь
ЕЪЕЦ мастер..хп_цмдшелл @цмд, НО_ОУТПУТ


Спасибо

Alex_3112
03-28-2008, 12:51 PM
Просто AS/400 = это была система для умных нормальных людей
Вот только поддержка "кармической чистоты" AS/400 делает ее внедрение в большинстве случаев проблематичным.


AJAX = это совокупность подходов. Основная идея была создавать "безопасные" соединения по http на уже открытой странице для обмена данными с удалёнными системами (к которым как будто бы предоставляется доступ ) и с возможностью обновления контента на странице.
Вот под этой основной идеей я и понимаю "утолщение" клиента. Можно этого добиться с помощью AJAX, можно с помощью других, менее красивых методов. В любом случае клиент уже ненулевой толщины - страница сама должна думать, что и как ей подгружать.

Классическая HTTP модель - это открыл/закрыл, функции javascript чисто вспомогательные.

crazy-mike
03-28-2008, 12:53 PM
Вот только поддержка "кармической чистоты" AS/400 делает ее внедрение в большинстве случаев проблематичным.

Угробили её тупые менеджеры по продажам!!!!! :plach:

crazy-mike
03-28-2008, 12:55 PM
В любом случае клиент уже ненулевой толщины - страница сама должна думать, что и как ей подгружать.
Классическая HTTP модель - это открыл/закрыл, функции javascript чисто вспомогательные.
Основная идея LiveScript в Netscape Navigator - как раз и заключалась в том - чтобы страница "думала".
HTTP/1.1 предусматривает существование "постоянно открытых соединений".
HTTP/1.0 = это в самом деле "открыл/закрыл"
;)
Элементы ActiveX и Java-applets = это тоже элементы "думающих страниц"...

Alex_3112
03-28-2008, 02:25 PM
Основная идея LiveScript в Netscape Navigator - как раз и заключалась в том - чтобы страница "думала".
HTTP/1.1 предусматривает существование "постоянно открытых соединений".
HTTP/1.0 = это в самом деле "открыл/закрыл"
;)
Элементы ActiveX и Java-applets = это тоже элементы "думающих страниц"...
Да, это все - попытки расширить HTTP-клиента.
Раньше, например, веб-программы с серьезными, на уровне целых приложений, апплетами были более популярны.

crazy-mike
03-28-2008, 03:01 PM
Да, это все - попытки расширить HTTP-клиента.
Раньше, например, веб-программы с серьезными, на уровне целых приложений, апплетами были более популярны.
Так потом всем захотелось "security" - и из Java-апплетов сделали что-то ну очень сильно декоративное. AJAX - это только способ "вернуться в старые добрые времена" (но под жёстким контролем серверных приложений). ;)

mineral
03-28-2008, 08:18 PM
есть [web application] написанное на [C#] из него вызывается [stored procedure] в которой делаются определенные [selection], можно ли прямо в етой [procedure create Excel file, insert in it selection result and save it]
Можно... Ишо кодику нашел... Но Олеговский путь самый простой...

http://weblogs.sqlteam.com/mladenp/archive/2006/07/25/10771.aspx

Такие вещи обычно прогуглить легко...