У меня только один вопрос: а почему не использовать getdata-процессоры? Как раз для таких задач они же и были написаны.