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

Откуда: Украина, Киев-Одесса
Сообщений: 182
Добрый день
Пытаюсь экспортировать результат запроса напрямую в xlsx-файл из среды SSMS
В недрах инета был найден способ, но ввиду отсутствия опыта построения таких запросов, где-то накосячил..
Установлен MS Office 2013

EXEC ('
insert into OPENROWSET(
''Microsoft.ACE.OLEDB.12.0',
'Excel 12.0';'Database=C:\Example.xlsx';'Extended Properties=HDR=YES'',
  ''SELECT  contractnumber
     
  FROM [REPORT].[dbo].[76]
 
  group by contractnumber'') '


Сообщение:
Сообщение 102, уровень 15, состояние 1, строка 6
Неправильный синтаксис около конструкции ";".
25 фев 14, 20:03    [15628709]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Кавычки надо все удваивать, а не только те, которые вам нравятся.
25 фев 14, 20:20    [15628809]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Гавриленко Сергей Алексеевич
Кавычки надо все удваивать, а не только те, которые вам нравятся.


Добавил
EXEC ('
insert into OPENROWSET(
''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0'';''Database=C:\Example.xlsx'';''Extended Properties=HDR=YES'',
 ''SELECT  contractnumber
     
  FROM [REPORT].[dbo].[76]
 
  group by contractnumber'') '


Результат
Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около конструкции "
insert into OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0';'Database=C:\Example.xlsx';'Extended Properties=HDR=YES',
".

При экспорте в xlsx-файл нужно чтобы он был открыт, и также нужно чтобы он содержал заглавную строку с наименованием колонок?
Может кто сталкивался..
26 фев 14, 11:02    [15630877]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
Добавил

Мало добавили
26 фев 14, 11:03    [15630886]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
И что за insert into без указания источника данных ?
Что вы хотели от такой конструкции ?
insert into OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0'';''Database=C:\Example.xlsx'';''Extended Properties=HDR=YES', 'SELECT  contractnumber  FROM [REPORT].[dbo].[76]  group by contractnumber')
26 фев 14, 11:06    [15630900]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
Добавил

Мало добавили


такой вариант
EXEC (''
insert into OPENROWSET(
''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0'';''Database=C:\Example.xlsx'';''Extended Properties=HDR=YES'',
 ''SELECT  contractnumber
     
  FROM [REPORT].[dbo].[76]
 
  group by contractnumber'') ''


возвращает:
Сообщение 156, уровень 15, состояние 1, строка 2
Неправильный синтаксис около ключевого слова "insert".
Сообщение 102, уровень 15, состояние 1, строка 3
Неправильный синтаксис около конструкции "Microsoft".
Сообщение 102, уровень 15, состояние 1, строка 9
Неправильный синтаксис около конструкции "".

Подскажите пожалуйста, в каком месте кода и что нужно подправить.. горит задача, а в инете в основном примеры обратной транспортировки данных - из ексель-файла
26 фев 14, 11:08    [15630914]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
Подскажите пожалуйста, в каком месте кода и что нужно подправить

Напишите сначала работающий НЕдинамический запрос

googlogmob
. горит задача

Кто бы сомневался. Вопрос жизни и смерти.
26 фев 14, 11:09    [15630925]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
insert into OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0';'Database=C:\Example.xlsx';'Extended Properties=HDR=YES', 'SELECT * FROM [Sheet1$]')
 SELECT  contractnumber
     
  FROM [REPORT].[dbo].[76]
 
  group by contractnumber


Сообщение 7438, уровень 16, состояние 1, строка 2
32-разрядный поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" не может быть загружен как внутрипроцессный на 64-разрядной версии SQL Server.

в SQL Server импортировал через 32 DTS Native Client 11.0
Как можно побороть проблему?..
26 фев 14, 11:43    [15631175]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
Как можно побороть проблему?..

Установить 64-разрядный поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" ???
26 фев 14, 11:44    [15631181]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Может у кого-то есть рабочий код на экспорт результата запроса в Ексель?
Буду-очень благодарен

в мануалах встречается обратная транспортировка данных
26 фев 14, 13:46    [15632279]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
Может у кого-то есть рабочий код на экспорт результата запроса в Ексель?

Никакой рабочий код на TSQL не установит нужные драйвера

googlogmob
в мануалах встречается обратная транспортировка данных

А вы не думали, почему так ?
26 фев 14, 13:52    [15632329]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
Как можно побороть проблему?..

Установить 64-разрядный поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" ???


Установил.
Код
insert into OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0';'Database=C:\Example.xlsx';'SELECT * FROM [Sheet1$]')
 SELECT  contractnumber
     
  FROM [REPORT].[dbo].[76]
 
  group by contractnumber


Результат:
Сообщение 102, уровень 15, состояние 1, строка 4
Неправильный синтаксис около конструкции ")".
26 фев 14, 13:54    [15632346]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
Неправильный синтаксис около конструкции ")".

Синтаксис не пробовали соблюдать ?
26 фев 14, 13:56    [15632366]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
Неправильный синтаксис около конструкции ")".

Синтаксис не пробовали соблюдать ?

Знал бы - давно исправил бы

Примера в инете не нашел, поэтому делал по логике
26 фев 14, 14:03    [15632434]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
Примера в инете не нашел, поэтому делал по логике

Пример OPENROWSET есть в хелпе
26 фев 14, 14:06    [15632462]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
sandy2
Member

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

insert into OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Example.xlsx','SELECT * FROM [Sheet1$]')
 SELECT  contractnumber
...
26 фев 14, 14:52    [15632863]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
sandy2
googlogmob,

insert into OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Example.xlsx','SELECT * FROM [Sheet1$]')
 SELECT  contractnumber
...


sandy2, Большое Спасибо
26 фев 14, 15:52    [15633433]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Результат запроса экспортируется в файл, но только если тот предварительно был создан в указанном месте с указанным наименованием листа

Если указать путь сохранения в не существующий файл, то возвращается ошибка:


Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" вернул сообщение "The Microsoft Access database engine could not find the object 'Лист1$'. Make sure the object exists and that you spell its name and the path name correctly. If 'Лист1$' is not a local object, check your network connection or contact the server administrator.".
Сообщение 7350, уровень 16, состояние 2, строка 3
Не удалось получить сведения о столбце от поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)".

Возможно ли посредствоим T-SQL создавать файл, если от отсутсвует?

А также в экспортируемый файл не передаются названия колонок. Возможно ли добавить первой строкой в файл назначения результата наименование колонок?
26 фев 14, 18:57    [15635105]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
никто не сталкивался?
27 фев 14, 17:24    [15641772]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
sp_AOCreated ?
27 фев 14, 17:33    [15641833]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
googlogmob
никто не сталкивался?

Вы все еще не поняли, почему "в мануалах встречается обратная транспортировка данных" ?
То, что вы хотите, гораздо проще и быстрее делается с другой стороны или другими средствами
28 фев 14, 10:29    [15644426]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
КопиПастер
Guest
А обычным копипастом нельзя вставить?
28 фев 14, 12:56    [15645698]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
никто не сталкивался?

Вы все еще не поняли, почему "в мануалах встречается обратная транспортировка данных" ?
То, что вы хотите, гораздо проще и быстрее делается с другой стороны или другими средствами


Честно говоря, Glory, тогда не понял) Нет возможности с кем-то посоветоваться по сиквелу
Была задача выгрузить список договоров по определенным параметрам выборки. количество договоров вариируется 50 - 500 тыс.
При таком количестве строк результата при сохранении в csv происходит "склеивание" нескольких граф в некоторых строках. Возможно через определенное окончание значений в ячейках пропускается разделитель..
Задача единоразовая. Для других задач возможностей терминала хватает. Теоретически предположил что экспортировать их в ексель-файлы будет не сложно.
Если совершать подключение с ексель (соединяется без проблем), то каким образом применить запрос с условиями выборки? ms query?
28 фев 14, 17:04    [15647964]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
если вам так уж хочеться ...
Пишите на любом языке прогрумулину которая делает запрос в сиквел и рожает нужный ексель файл.. выб ее откровенно уже давно написалиб за ети 2 дня .
Тоже самое можно сделать с помощью SSIS , но ИМХО времени потратите больше
28 фев 14, 17:07    [15647976]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт результата запроса в xlsx-файл  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
автор
Возможно ли посредствоим T-SQL создавать файл, если от отсутсвует?


Можно, если Вы используете OLE-автоматизацию.

sp_OACreate создать объект
sp_OAGetProperty возвращает значение свойства.
sp_OASetProperty устанавливает значение свойства.
sp_OAMethod вызывает метод.
sp_OAGetErrorInfo возвращает сведения о последней возникшей ошибке.

"Настройка контактной зоны" - топик справки, читать для включения поддержки OLE.
28 фев 14, 17:23    [15648098]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить