Как извлечь подмножество базы данных в файл dbunit с помощью запроса sql?

Почему ?

У меня есть большая таблица Oracle. Я хотел бы протестировать некоторые методы DAO. Для этого я использую dbunit.

Проблема

Я хотел бы извлечь подмножество существующей базы данных в виде плоского xml-файла dbunit, используя запрос sql. Пример запроса:

Select 
      t1.field1 as field1, t1.field2 as field2, t2.field3 as field3
From 
       table1 t1
       Join table2 t2 on t1.fieldX=t2.fieldX
Where 
       t1.field6='value' and t2.field8='value2'

в этом случае он извлечет все записи table1 и table2, которые являются результатами запроса, а затем также извлечет все зависимости этих записей.

Что я пробовал

  1. тюремщик

Я протестировал Jailer, который является хорошим инструментом. Проблема в том, что я могу сделать запрос только к одной таблице и извлечь его, сохранив отношения. В моем sql-запросе есть несколько соединений и условия, которые нельзя разрешить с помощью этого программного обеспечения.

  1. Генерация DBUnit

Я также пытался использовать DBUnit напрямую для создания набора данных, но для этого требуется много работы, потому что мы не можем напрямую генерировать подмножество из запроса sql, а только указав последовательность небольших запросов для каждой таблицы. У меня много соединений и условий, поэтому это неприемлемое решение.

Вопрос

Как создать подмножество базы данных (и экспортировать его в плоский XML-файл dbunit), используя sql-запрос в качестве основы для экспорта?


person Jerome Cance    schedule 10.01.2013    source источник
comment
Вам нужно подмножество всей базы данных, одной таблицы или результата оператора SELECT? Поскольку вы смешиваете эти термины, я немного сбит с толку - также из-за комментария несколько соединений и условий, который указывает, что вы хотите экспортировать результат оператора SELECT, а не базу данных или таблицу.   -  person a_horse_with_no_name    schedule 10.01.2013
comment
Я отредактировал свой пост, чтобы отразить это. Мой запрос является выбором.   -  person Jerome Cance    schedule 10.01.2013


Ответы (1)


Я думаю, что то, что вы хотите, может быть за пределами компетенции DBUnit.

Я думаю, что лучший способ сделать это — настроить серию представлений, которые обрабатывают соединения и извлекают через них ваши данные. Получив представление, вы можете использовать SQL-запросы для вытягивания данных.

person Mark Robinson    schedule 10.01.2013