Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выгрузить данные в формате "Таблица XML 2003"  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Доброго времени суток!
Необходимо загрузить в приложение данные в формате "Таблица XML 2003" , не могли бы подсказать как сделать выгрузку из sql именно в этом формате?
10 сен 14, 09:54    [16557658]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Glory
Member

Откуда:
Сообщений: 104760
sabitaidr
в формате "Таблица XML 2003" ,

И кто придумал этот формат ? И где его описание ?
10 сен 14, 09:56    [16557671]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
sabitaidr
Member

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

В Excel выбираем сохранить как и в поле тип файла выбрать "Таблица XML 2003 (*.xml)"
10 сен 14, 10:04    [16557715]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Glory
Member

Откуда:
Сообщений: 104760
sabitaidr
В Excel выбираем

Замечательно.
Т.е. теперь всем нужно самостоятельно узнать, что там делает Excel ?
10 сен 14, 10:06    [16557720]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Формирует файл в виде таблицы с значениями (приложил, сформировал вручную, убрал все лишнее, оставил только то, что кушает приложение), значения записываются в ячейки таблицы. Если значения строк (row) можно попробовать прописать с помощью for xml, то приложение в которую загружается данный файл категорически отказывается кушать файлы без тегов: Workbook,Worksheet (соответственно с их значениями) . Их придется вручную прописывать или же есть какой-то метод?

К сообщению приложен файл (test1.xml - 11Kb) cкачать
10 сен 14, 10:34    [16557853]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Glory
Member

Откуда:
Сообщений: 104760
sabitaidr
или же есть какой-то метод?

http://msdn.microsoft.com/ru-ru/library/ms178107.aspx
10 сен 14, 10:36    [16557865]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
а вот эти данные прописать вручную?
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
10 сен 14, 10:38    [16557875]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Glory
Member

Откуда:
Сообщений: 104760
sabitaidr
а вот эти данные прописать вручную?

"Эти данные" называются XML namespace
http://msdn.microsoft.com/ru-ru/library/ms177400.aspx
10 сен 14, 10:56    [16557959]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Glory,
а как прописывается эта строчка? <Cell><Data ss:Type="String">first_name</Data></Cell>
10 сен 14, 11:07    [16558021]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
sabitaidr
Glory,
а как прописывается эта строчка? <Cell><Data ss:Type="String">first_name</Data></Cell>

простите конечно..но что вам мешает открыть хмл от екселя и посотреть его структуру ? Пато попытаться создать такой же
Скажу вас больше.. если вопользуетесь поиском - то именно ваше решение здесь есть... формирование екселевсого файла из т-скл,со всеми вытекающими
10 сен 14, 11:21    [16558082]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
sabitaidr
Member

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

спасибо, посмотрю
10 сен 14, 11:48    [16558301]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
sabitaidr, если есть возможность, поставьте add-in SSMSBoost.

Он позволяет выгрузить содержимое грида (результат запроса) в формат ExcelML (Он так правильно называется).
10 сен 14, 15:54    [16560069]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
alukardD
Member

Откуда: USSR
Сообщений: 3369
Для тех, кто не ищет лёгких путей))))) можно выгрузить скриптом а-ля
+

use newdb
declare @alreadyIn int, @amount int, @iteration int, @step int;
declare @cmd sysname;

set @alreadyIn = 0;--Записи, которые уже выбирались.для первого раза 0
set @iteration = -1;--если записей меньше 50000 - то мы всё равно пройдём 1 цикл
set @step = 50000;--кол-во записей в каждый файл

select @amount = count(1)/@step from [newdb].[dbo].[Table_1];--сколько раз выберем по 50000. За счёт @iteration = -1 - как минимум один раз

while (@iteration)<@amount
begin
set @iteration = @iteration + 1;

select TOP (@step) t.*
into tempTable
from [newdb].[dbo].[Table_1] t
where t.id not in
(
select TOP (@alreadyIn) tt.id
from [newdb].[dbo].[Table_1] tt
order by tt.id
)
order by t.id;

SET @cmd = 'bcp "select * from [newdb].[dbo].[tempTable]" queryout c:\temp\file' + cast(@iteration as varchar(15)) + '.xls -c -C1251 -T';
EXEC master..xp_cmdshell @cmd;
set @alreadyIn = @alreadyIn + @step;
DROP TABLE tempTable;
end;


Меняем название БД на своё, путь к таблице, execute. заливает по 50000 записей в разные файлики. Путь сохранения - c:\temp\file=)

PS Если xp_cmdshell не работает прокатить:
+

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
18 дек 14, 12:32    [17015987]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Glory
Member

Откуда:
Сообщений: 104760
alukardD
можно выгрузить скриптом а-ля

И что утилита bcp реально создает xml ?
18 дек 14, 12:35    [17016020]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
alukardD
Member

Откуда: USSR
Сообщений: 3369
Glory,

Тьфу ты с екселем перепутал
18 дек 14, 12:36    [17016031]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Glory
Member

Откуда:
Сообщений: 104760
alukardD
Тьфу ты с екселем перепутал

Ух-ты, а bcp еще и ексель файлы создает ?
18 дек 14, 12:37    [17016042]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
alukardD
Member

Откуда: USSR
Сообщений: 3369
Glory,

Можно допилить "for xml raw"
Нормально отрабатывает...

+

use newdb
declare @alreadyIn int, @amount int, @iteration int, @step int;
declare @cmd sysname;

set @alreadyIn = 0;--Записи, которые уже выбирались.для первого раза 0
set @iteration = -1;--если записей меньше 50000 - то мы всё равно пройдём 1 цикл
set @step = 50000;--кол-во записей в каждый файл

select @amount = count(1)/@step from [newdb].[dbo].[Table_1];--сколько раз выберем по 50000. За счёт @iteration = -1 - как минимум один раз

while (@iteration)<@amount
begin
set @iteration = @iteration + 1;

select TOP (@step) t.*
into tempTable
from [newdb].[dbo].[Table_1] t
where t.id not in
(
select TOP (@alreadyIn) tt.id
from [newdb].[dbo].[Table_1] tt
order by tt.id
)
order by t.id;

SET @cmd = 'bcp "select * from [newdb].[dbo].[tempTable] for xml raw" queryout c:\temp\file' + cast(@iteration as varchar(15)) + '.xml -c -C1251 -T';
EXEC master..xp_cmdshell @cmd;
set @alreadyIn = @alreadyIn + @step;
DROP TABLE tempTable;
end;
18 дек 14, 12:43    [17016115]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
В приложении можно использовать Reporting Services и экспортировать в чем угодно - хоть XLS, хоть PDF.
Задача сервера - отвечать на запросы. а не выгружать что-то куда-то, этим должны заниматься клиентские приложения.
18 дек 14, 12:45    [17016134]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
alukardD
Member

Откуда: USSR
Сообщений: 3369
Владислав Колосов
В приложении можно использовать Reporting Services и экспортировать в чем угодно - хоть XLS, хоть PDF.

Согласен.

Владислав Колосов
Задача сервера - отвечать на запросы. а не выгружать что-то куда-то, этим должны заниматься клиентские приложения.

А клиентские приложения будут это делать минуя сервер(/без него/не создавая нагрузки)?
18 дек 14, 12:50    [17016195]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
_human
Member

Откуда:
Сообщений: 560
Владислав Колосов
Reporting Services и экспортировать в чем угодно - хоть XLS

это нужно брать старый репортинг? 2012 экспортирует в XLSX
Или как-то кастомайзить репортинг для этого формата
18 дек 14, 13:23    [17016555]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить данные в формате "Таблица XML 2003"  [new]
один из вариантов
Guest
sabitaidr,

7958157
22 дек 14, 11:28    [17032744]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить