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

Откуда:
Сообщений: 266
Добрый день.
Недавно читал, что можно выполнить экспорт нужных данных из MSSQL 2008 в EXCEL одним лишь запросом.
Подскажите правда ли это?
Если правда, подскажите синтаксис?
11 дек 12, 13:54    [13612522]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
Недавно читал, что можно выполнить экспорт нужных данных из MSSQL 2008 в EXCEL одним лишь запросом.


BOL - OPENDATASOURCE
The following example creates an ad hoc connection to an Excel spreadsheet in the 1997 - 2003 format.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;
 
11 дек 12, 13:57    [13612540]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
Недавно читал, что можно выполнить экспорт нужных данных из MSSQL 2008 в EXCEL одним лишь запросом.


BOL - OPENDATASOURCE
The following example creates an ad hoc connection to an Excel spreadsheet in the 1997 - 2003 format.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;
 



SELECT ha.datetime as ha_date,
 ha.id_hist_calls as ha_id_hist_calls,
  ha.name as ha_name,
  FROM Hist_answer ha 
   WHERE ha.id_firm=48 ORDER BY ha.datetime ASC


А как сделать чтобы экспортировались только данные из вышеприведенного запроса?
11 дек 12, 14:13    [13612655]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
А как сделать чтобы экспортировались только данные из вышеприведенного запроса?

начать изучение других команд SQL-я
INSERT, UPDATE, DELETE ...
11 дек 12, 14:15    [13612683]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
А как сделать чтобы экспортировались только данные из вышеприведенного запроса?

начать изучение других команд SQL-я
INSERT, UPDATE, DELETE ...


немного знаю) я имею ввиду куда в Вашем коде добавить мой код который выбирает значения из базы?
11 дек 12, 14:17    [13612701]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
еще есть вариантик - воспользоваться поиском по форуму по ключевому слову Excel
11 дек 12, 14:17    [13612702]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
немного знаю) я имею ввиду куда в Вашем коде добавить мой код который выбирает значения из базы?

В моем - никуда.
11 дек 12, 14:19    [13612711]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
немного знаю) я имею ввиду куда в Вашем коде добавить мой код который выбирает значения из базы?

В моем - никуда.


а как тогда его можно использовать?

прочитал, что

OPENDATASOURCE (Transact-SQL)
Предоставляет сведения о нерегламентированном подключении в виде элемента имени объекта, состоящего из четырех частей, без использования имени связанного сервера.

а дальше?
11 дек 12, 14:20    [13612724]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Amateur7
емного знаю) я имею ввиду куда в Вашем коде добавить мой код который выбирает значения из базы?

Читать сначала
пjтом указать ету конструкцию в команде INSERT как вам подсказал Glory
11 дек 12, 14:20    [13612726]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Amateur7
а дальше?

А вот здесь дальше
11 дек 12, 14:21    [13612731]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
а дальше?

А дальше
"начать изучение других команд SQL-я
INSERT, UPDATE, DELETE ... "
11 дек 12, 14:22    [13612732]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
SET NOCOUNT ON;
USE ratiss;
GO
CREATE TABLE dbo.test (
 Id int,
 dt datetime
 );
GO
INSERT INTO dbo.test VALUES ( 1, '20080101' );
INSERT INTO dbo.test VALUES ( 2, '20080201' );
INSERT INTO dbo.test VALUES ( 3, '20080301' );
INSERT INTO dbo.test VALUES ( 4, '20080401' );
INSERT INTO dbo.test VALUES ( 5, '20080501' );
INSERT INTO dbo.test VALUES ( 6, '20080601' );
INSERT INTO dbo.test VALUES ( 7, '20080701' );
INSERT INTO dbo.test VALUES ( 8, '20080801' );
INSERT INTO dbo.test VALUES ( 9, '20080901' );
INSERT INTO dbo.test VALUES ( 10, '20081001' );
GO 
INSERT INTO OPENDATASOURCE ('Microsoft.Jet.OleDB.4.0', 
 'Data Source="С:\Export.xls"; 
 extended Properties=Excel 8.0')...[ExportSheet$] 
 SELECT Id, dt
  FROM dbo.test;
GO
PRINT 'Populated set';


Получаю ошибку

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'Microsoft.Jet.OleDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
Populated set


С чем это может быть связано?
11 дек 12, 14:50    [13612945]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
С чем это может быть связано?

Возьмите в привычку публиковать полную версию сервера.
11 дек 12, 14:54    [13612967]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
С чем это может быть связано?

Возьмите в привычку публиковать полную версию сервера.


хорошо, учту.
Выполняется на MSSQL 2008.
11 дек 12, 14:56    [13612985]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
С чем это может быть связано?

Возьмите в привычку публиковать полную версию сервера.


Windows Server RC2
запрос идет на MSSQL 2008
11 дек 12, 14:57    [13612995]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
x64?
Guest
Amateur7,
x64?
11 дек 12, 14:58    [13613001]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
Windows Server RC2
запрос идет на MSSQL 2008

Полная версия - это результат select @@version
А не вольный пересказ.
11 дек 12, 14:58    [13613003]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
Windows Server RC2
запрос идет на MSSQL 2008

Полная версия - это результат select @@version
А не вольный пересказ.

не знал)

Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64)   
Jun 11 2012 16:41:53   
Copyright (c) Microsoft Corporation  
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 
11 дек 12, 15:11    [13613090]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Народ как быть? где исправить ошибку?
11 дек 12, 15:43    [13613389]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
x64?
Guest
блин, ну написано же, сервер x64.
а провайдер Jet -- x32.
используй ACE 12
11 дек 12, 15:47    [13613428]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
x64?
блин, ну написано же, сервер x64.
а провайдер Jet -- x32.
используй ACE 12


сорри но, я еще многого не знаю..
что такое ACE 12 ?
11 дек 12, 18:00    [13614706]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Amateur7
x64?
блин, ну написано же, сервер x64.
а провайдер Jet -- x32.
используй ACE 12


сорри но, я еще многого не знаю..
что такое ACE 12 ?


Вы имеете ввиду что нужно вместо
GO 
INSERT INTO OPENDATASOURCE ('Microsoft.Jet.OleDB.4.0', 
 'Data Source="С:\Export.xls"; 
 extended Properties=Excel 8.0')...[ExportSheet$] 
 SELECT Id, dt
  FROM dbo.test;


сделать

GO 
INSERT INTO OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0', 
 'Data Source="С:\Export.xls"; 
 extended Properties=Excel 8.0')...[ExportSheet$] 
 SELECT Id, dt
  FROM dbo.test;


Или что-то другое?
11 дек 12, 18:03    [13614721]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
x64?
Guest
Amateur7,

сперва посмотреть, зарегистрирован ли на сервере: sp_enum_oledb_providers.
если никто его спецом не ставил, установить.
ну и там Excel 12.0 (в connection string).
вообще поиск по форуму на ACE 12 рулит
11 дек 12, 18:27    [13614891]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
x64?
Amateur7,

сперва посмотреть, зарегистрирован ли на сервере: sp_enum_oledb_providers.
если никто его спецом не ставил, установить.
ну и там Excel 12.0 (в connection string).
вообще поиск по форуму на ACE 12 рулит


Скажите, а вообще для работы экспорта в Excel нужно ставить на сервер MS OFFICE или нет?
Потому как если нужна лицензия, то придется искать другое решение..
12 дек 12, 22:10    [13622426]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
exec sp_enum_oledb_providers

выдает следующее

Картинка с другого сайта.
12 дек 12, 22:14    [13622452]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Все сделал, но на запрос


Use database
Go
INSERT INTO OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0', 
 'Data Source="C:\Export.xls"; 
 extended Properties=Excel 8.0')...[ExportSheet$] 
 SELECT id_sale
  FROM dbo.Sale;


получаю ошибку
Msg 7314, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" does not contain the table "ExportSheet$".
The table either does not exist or the current user does not have permissions on that table.



Таблица существует..
Запрос выполяю из MSSQL Manager..

Подскажите в чем может быть дело?
12 дек 12, 23:57    [13622817]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
Таблица существует..

Каким запросом вы это проверили ?
13 дек 12, 10:44    [13623926]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
Таблица существует..

Каким запросом вы это проверили ?


я же запрос отправляю через MSSQL Manager. Через него же я вижу наличие таблицы в определенной базе данных. Или я что-то путаю с запросом?

Картинка с другого сайта.
13 дек 12, 12:34    [13624810]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amateur7
я же запрос отправляю через MSSQL Manager. Через него же я вижу наличие таблицы в определенной базе данных. Или я что-то путаю с запросом?

Вы сообщение точно читали ?
does not contain the table "ExportSheet$"
13 дек 12, 12:35    [13624823]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
я же запрос отправляю через MSSQL Manager. Через него же я вижу наличие таблицы в определенной базе данных. Или я что-то путаю с запросом?

Вы сообщение точно читали ?
does not contain the table "ExportSheet$"



Да, ошибка из-за [ExportSheet$].

Из текста понятно, что OLE DB-провайдер "Microsoft.ACE.OLEDB.12.0" не содержит таблицы "ExportSheet $"...

Подскажите, а чем здесь выступает ExportSheet $ и где и в каком виде, должна располагаться данная таблица?
13 дек 12, 14:52    [13626064]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
я же запрос отправляю через MSSQL Manager. Через него же я вижу наличие таблицы в определенной базе данных. Или я что-то путаю с запросом?

Вы сообщение точно читали ?
does not contain the table "ExportSheet$"


Насколько я понял, ExportSheet- это имя листа, на листе должна быть колонка с именем id_sale.

Я сделал это

Картинка с другого сайта.

Файл Excel в формате Книга Excel 97-2003

Но теперь получаю следующую ошибку

Картинка с другого сайта.

Есть сомнения, что ошибка из-за версии файла Excel, подскажите так ли это или ошибка в другом?
13 дек 12, 15:12    [13626277]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Никто не знает в чем может быть дело?
13 дек 12, 23:06    [13629200]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из MSSQL 2008 в EXCEL одной командой ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Решение


INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 8.0;Database=C:\Export.xls;',
'SELECT id_sale FROM [ExportSheet$]')
SELECT id_sale
FROM dbo.Sale


ИЛИ

INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\Export.xls;Extended Properties=EXCEL 5.0')...[ExportSheet$]
SELECT id_sale
FROM dbo.Sale
15 дек 12, 16:02    [13636601]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить