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

Откуда:
Сообщений: 22
Всем привет
Подскажите пожалуйста каким образом организовать в MS SQL 2008 сохранение результата запроса в файл Excel. Если можно поподробнее
28 май 13, 12:07    [14358294]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Воспользоваться поиском по "'экспорт excel" и "выгрузка excel"
28 май 13, 12:29    [14358443]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
http://www.softsoft.ru/business/databases-tools/15582.htm
28 май 13, 12:29    [14358447]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Lavrov_Yura
Member

Откуда:
Сообщений: 34
сталкивался с выгрузкой только в текстовый файл, может поможет:
set @str='bcp "select  [Имя],[Телефон],[Код],id from dbo.tf  order by id" queryout "D:\txt\'+@queue+'_'+@datetime+'.txt" -T -c -C RAW' 
EXEC xp_cmdshell @str
28 май 13, 12:39    [14358533]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
sql_padavan
Member

Откуда:
Сообщений: 22
Lavrov_Yura,
Я попытался но не понял про объявление скалярной переменной , присвоил значение к @datetime = select getdate() но все равно ошибка. в чем проблема?
28 май 13, 13:14    [14358873]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Судя по всему в том, что вы не читали азов?

set @var = GetDate()
select @var = GetDate()

set @var = (select ... )

И вам совершенно не нужен гетдейт для ЗАПИСИ, у вас ведь с ЗАПИСЬЮ вопрос?
28 май 13, 13:22    [14358950]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Lavrov_Yura
Member

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

Составления имя файла из разных частей вообще не обязательно, но иногда дата в имени полезна при автоматизации.
Можно вместо "D:\txt\'+@queue+'_'+@datetime+'.txt" просто прописать "D:\txt\текстовый_файл.txt" с любым именем.
28 май 13, 13:45    [14359155]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Лично я использую два пути
CSV + выгрузка через OLE AUTOMATION
либо
VBA код в экселе через AODB рекордсеты
И, конечно же, лучше использовать нормальный отчетник, вместо подобной эквилибристики.
28 май 13, 14:21    [14359419]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
sql_padavan
Member

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

Можно поподробнее про CSV + выгрузка через OLE AUTOMATION или ссылку на него.
28 май 13, 14:46    [14359629]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Используйте поиск. Выгрузка через оле примерно вот так (не копирайт, сам копипастил), CSV делайте как вам угодно. Только заранее учтите, что сложение варчаров больших размеров ОЧЕНЬ тормозная, и строку надо собирать через XML. Было тут же на форуме, несколько раз.
ALTER PROCEDURE [dbo].[ExcelExport] (
	 @@File		SysName
	,@@Data		NVarChar(max)
	,@@Encoding	SysName	= 'utf-8'
) WITH EXECUTE AS OWNER AS BEGIN
	DECLARE	 @OLEStream	Int
		,@Code		Int
		,@Method	SysName
		,@Source	SysName
		,@Descript	NVarChar(4000)
	EXEC @Code = sys.sp_OACreate 'ADODB.Stream' ,@OLEStream OUT
	IF (@Code != 0)
		SELECT	 @Method	= 'Scripting.Stream'
			,@Source	= 'sp_OACreate'
			,@Descript	= 'Ошибка создания OLE объекта'
	ELSE BEGIN
		SET @Method = 'Open';		EXEC @Code = sys.sp_OAMethod		@OLEStream ,@Method			IF (@Code != 0) GOTO Error;
		SET @Method = 'CharSet';	EXEC @Code = sys.sp_OASetProperty	@OLEStream ,@Method, @@Encoding		IF (@Code != 0) GOTO Error;
		SET @Method = 'WriteText';	EXEC @Code = sys.sp_OAMethod		@OLEStream ,@Method ,NULL ,@@Data	IF (@Code != 0) GOTO Error;
		SET @Method = 'SaveToFile';	EXEC @Code = sys.sp_OAMethod		@OLEStream, @Method, NULL, @@File, 2	IF (@Code != 0) GOTO Error;
		SET @Method = 'Close';		EXEC @Code = sys.sp_OAMethod		@OLEStream, @Method			IF (@Code != 0) GOTO Error;
		SET @Method = NULL; GOTO Destroy;
Error:						EXEC @Code = sys.sp_OAGetErrorInfo	@OLEStream ,@Source OUT ,@Descript OUT
Destroy:					EXEC @Code = sys.sp_OADestroy		@OLEStream
	END
	-- Вывод ошибок
	IF (@Method IS NOT NULL) BEGIN
		RAISERROR('Ошибка при выполнении метода "%s" в "%s": %s',18,1,@Method,@Source,@Descript)
		RETURN	@@Error
	END
END
GO
28 май 13, 15:31    [14359966]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
https://www.sql.ru/forum/807172-1/pechat-v-tekstovyy-fayl
28 май 13, 15:36    [14360002]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
https://www.sql.ru/faq/faq_topic.aspx?fid=122
28 май 13, 15:38    [14360018]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
все только скромно молчат, что для выполнения указанных методов нужны довольно серьезные права на сервере.
28 май 13, 15:46    [14360075]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Любая работа с сервером требует определнных прав. К чему ваш коммент?
28 май 13, 16:34    [14360533]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
Cammomile
Любая работа с сервером требует определнных прав. К чему ваш коммент?

Не любая работа требует прав sa
28 май 13, 16:36    [14360551]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Cammomile
К чему ваш коммент?
28 май 13, 16:37    [14360561]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
Cammomile
Cammomile
К чему ваш коммент?

К тому, что прежде чем советовать метод, надо указывать кто его сможет выполнять
28 май 13, 16:40    [14360584]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну вы тогда не забудьте рекурсивно пройтись по всем веткам форума, где "советовали" этот метод, и прокомментируте подобным образом всех прочих товарищей, у которых дата регистрация поменьше моей, а постов побольше. Чисто чтоб быть последовательным ;-)
28 май 13, 16:59    [14360733]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
Cammomile
Ну вы тогда не забудьте рекурсивно пройтись по всем веткам форума, где "советовали" этот метод, и прокомментируте подобным образом всех прочих товарищей, у которых дата регистрация поменьше моей, а постов побольше. Чисто чтоб быть последовательным ;-)

Вы такой умный.
Видно же, что ТС не понимает элементарного синтаксиса. А советуете.
28 май 13, 17:02    [14360761]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Cammomile,

ну ладна же
попробуй

DECLARE @myfile varchar(800)

SET @myfile = 'C:\template.xls'

EXEC ('
insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 8.0;Database=' + @myfile + ';'',
''SELECT * FROM [SheetName$]'')
select * from myTable
')
28 май 13, 17:02    [14360762]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
И тут надо оставить комент глористайл, что вы совершенно необдуманно советуете, потому, что джет в 2008 серваке отсутвует, и его надо отдельно регистрировать, а если машина х64 то джета вообще нет, а надо искать аналог, а его ставить нужны права админа ляля тополя... но я не Глори, поэтому

Норм идея, если сработает то лучше так, чем через оле =)
28 май 13, 17:42    [14361001]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Просто в моем случае 2005 х64 не было джета, зато есть доступ sa поэтому я наваял процку и гружу себе отчики джобчиками либо в педально режиме в специальную папочку.
28 май 13, 17:43    [14361011]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Glory
Вы такой умный.
Видно же, что ТС не понимает элементарного синтаксиса. А советуете.
28 май 13, 17:49    [14361042]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
БуферОбмена
Guest
Нажать на квадратик в левом верхнем углу таблицы с результатом запроса в Management Studio, Ctrl+C, открыть Excel, Ctrl+V.
28 май 13, 18:52    [14361370]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Горько расплакаться, когда набор записей окажеться больше чем может показывать клиент.
28 май 13, 19:00    [14361405]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить