Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > 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]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)