2009-04-20 3 views
0

Наша база данных содержит иерархические «элементы». Каждый элемент имеет подробную информацию в отдельной таблице. Например. элемент может быть папкой или файлом. Теперь я хотел бы экспортировать дочерние элементы элемента в XML. По соображениям производительности я хотел бы сделать это внутри SP. Конечно, можно написать SP на основе курсора, но курсоры имеют тенденцию быть медленными. Гораздо лучше, являются КТР (с ...) и FOR XML, но я не знаю, как совместить КТР и FOR XML, включая информацию о детали таблицы.Экспорт иерархических данных в XML

DDL

create table items (
    itemid integer, 
    parent_itemid integer 
) 

create table folder (
    folderid integer, 
    itemid integer, 
    foldername varchar(50), 
    [..] 

create table file (
    fileid integer, 
    itemid integer, 
    filename varchar(50), 
    [..] 

XML экспорт

<folder id="1" foldername="Top-Folder"> 
<folder id="2" foldername="Sub-Folder"> 
    <file id="10" filename="Subdoc.doc"/> 
</folder> 
<file id="10" filename="Doc1.doc"/> 
<file id="11" filename="Doc2.doc"/> 
</folder> 

ответ

1

Если данные будут вписываться в память, экспортировать 3 таблицу (соответствующий) в фрагменте памяти вашего любимого языка программирования, а затем собрать дерево. Или дампируйте таблицы в текстовые файлы, такие как формат .CSV, затем сканируйте их.

Я хотел бы использовать Perl, но рубин или Python, вероятно, будет хорошим выбором, а также. Или ваш собственный язык выбора/необходимости.

Побег из базы данных, а остальные должны быть довольно прямо вперед. Помимо аспектов «момента извлечения», отчетные свалки не требуют транзакций. Вытащите данные, а затем разжевывайте их на досуге.

2

Может быть, это поможет: Create XML Files Out Of SQL Server With SSIS And FOR XML Syntax

+0

Очень интересно, особенно в той части, где ключевые слова в хранимой процедуре сделали это «просто работать». Когда я добрался до части клики/диалога, мои глаза застеклены, так как я не знаком с продуктом (и мне интересно, как совершать щелчки мыши в контроле версий) – Roboprog

+0

сохранить проект BIDS в Subversion или просто. dtsx-файл, который просто XML в любом случае – SQLMenace

Смежные вопросы