| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > export MS SQL Server -> Excel |
| Автор: digital_pilot 6.11.2002, 07:45 |
| всем салют. Вопрос такой. Хотелось бы осуществить сабж чем-нибудь вроде такого запроса: SELECT * INTO [target_sheet] FROM [source_table] В качестве таргета может быть excel, text, html - неважно. Напр., между Jet'овскими БД подобные запросы проходят с помощью вещей типа: SELECT * INTO [Tab1] IN 'c:\Target.xls' 'Excel 8.0;' FROM [source_table] Можно ли провернуть нечто подобное с SQL Server'ом? Заранее благодарен за любые идеи. P.S. DTS не предлагать |
| Автор: Vit 6.11.2002, 08:32 |
| Select * Into ServerName1.Database1.DatabaseOwner1.Table1 From ServerName2.Database2.DatabaseOwner2.Table2 Естественно, что надо иметь разрешение такое делать на сервере. Можно например так Select * Into ServerName1.Database1.dbo.Table1 From ServerName2.Database2.dbo.Table2 или если на одном сервере: Select * Into Database1.dbo.Table1 From Database2.dbo.Table2 или если в одной базе данных: Select * Into Table1 From Table2 А ещё, посмотри здесь: http://www.forum.vingrad.ru/cgi-bin/newforum/ikonboard.cgi?act=ST;f=12;t=1037 |
| Автор: digital_pilot 6.11.2002, 09:48 |
| угу... я это все знаю... Только мне нужно не между 2-мя серверами, а между SQL Server'ом и ёкселем. Т.е. мне как-то нужно правильно записать полное квалифицированное имя для таргетовой екселевской таблицы. Я, в принципе, нашел 1 метод, но он уж больно черезжоповый - обходными путями, через динамическое создание Jet'ового коннекшна на основе Access'ового файла-пустышки. И когда я указываю имя екселевской таблицы, то Jet вот такое вот понимает: [Excel 8.0;Database=D:\a.xls].[Sheet1] А мне б вот че-нить наподобие, но чтобы, к примеру, QA тоже понимал. |
| Автор: digital_pilot 6.11.2002, 22:36 |
| Все, получилось. Вариант такой: создается коннекшн через провайдера Microsoft.Jet.OLEDB.4.0 к какой-нибудь базе-пустышке, XLS или MDB. Потом через этот коннекшн просто пропихивается нужный SQL-стэйтмент, который неявно коннектится к SQL-серверу и целевой екселевской базе: SELECT * INTO [Excel 8.0;Database=d:\Target.xls].[Sheet1] FROM [ODBC;Driver=SQL Server;Database=MyDB;Server=MyServer;Trusted_Connection=Yes;].[dbo.MyTable] Вместо ёкселя в качестве таргета можно также использовать HTML или TXT. Тогда 2-я строчка будет выглядеть приблизительно так: [HTML Export;Database=d:\].[Target.htm] или [Text;Database=d:\].[Target.txt] |