Франк.
Лично мне неизвестны какие-либо автоматизированные инструменты, которые могут "захватывать" меньшее подмножество ваших производственных данных в набор тестов, но в свое время я смог использовать QMF и некоторые общие запросы для этого. Это требует предварительного планирования / анализа ваших структур таблиц, родительско-дочерних зависимостей, ссылочной целостности и других вещей.
Это заняло некоторую начальную работу, но как только она была выполнена, я смог использовать и повторно использовать эти инструменты для извлечения нескольких различных представлений производственных данных для моих целей тестирования.
Если вам это нравится, читайте дальше.
В режиме высокого уровня вы можете сделать это:
- Определите, как называются ключевые столбцы.
- Создать для них таблицу «ключей».
- Напишите несколько запросов, чтобы найти условия тестирования и заполнить таблицу ключей.
- Как только вы убедитесь, что keys_table имеет удовлетворительное подмножество ключей, вы можете использовать созданные вами инструменты, чтобы вырезать данные для вас.
- Напишите общий запрос, объединяющий key_table с таблицей производственных таблиц, и экспортируйте данные в простые файлы.
- Напишите процедуру, которая автоматически сделает все извлечения / заполнения для вас.
Если у вас есть доступ к QMF (и вы, вероятно, делаете это в магазине DB2), вы можете сделать что-то вроде этого:
- Определите все нужные вам таблицы.
- Определите первичные индексы для этих таблиц.
- Определите все требования к ссылочной целостности для этих таблиц.
- Определить родительские и дочерние отношения между всеми таблицами.
- Для дочерней таблицы самого низкого уровня (обычно таблицы с большинством индексов) запишите все столбцы, используемые для идентификации уникального ключа.
С помощью приведенной выше информации вы можете создать общий запрос, чтобы вырезать меньший подраздел производственных данных, для # 5. Другими словами, вы можете создать ряд конкретных запросов и заполнить небольшую таблицу ключей, которую вы создаете.
В QMF вы можете создать общий запрос следующим образом:
select t.*
from &t_tbl t
, &k_tbl k
where &cond
order by 1, 2, 3
В процедуре вы просто передаете переменные tablename, keys и condtions. Как только данные собраны, вы экспортируете данные в какое-то имя файла.
Вы можете создать процесс EXPORT_TABLE, который будет выглядеть примерно так:
run query1 (&&t_tbl = students_table , &&k_tbl = my_test_keys ,
+ &&cond = (t.stud_id = k.stud_id and t.course_id = k.course_id)
export data to studenttable
run query1 (&&t_tbl = course_table , &&k_tbl = my_test_keys ,
+ &&cond = (t.cour_id = k.cour_id
+ (and t.cour_dt between 2009-01-01 and 2010-02-02)
export data to coursetable
.....
Это может захватывать все данные по мере необходимости.
Затем вы можете создать процесс IMPORT_TEST, чтобы сделать обратное:
import data from studenttable
save data as student_table (replace = yes
import data from coursetable
save data as course_table (replace = yes
....
Создание может занять некоторое время, но по крайней мере у вас будет инструмент для повторного использования для извлечения ваших данных.
Надеюсь, это поможет.