Архитектура дизайна для инструмента

У меня есть требование инструмента, который будет собирать данные, а затем сохранять их в файле Excel и генерировать sqls для выполнения базы данных.

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

Подход, о котором я думаю, состоит в том, чтобы разработать больше xmls (по одному на каждую схему в дБ), которая будет содержать точную копию необходимой структуры таблицы базы данных. В XML GUI я бы предоставил новый тег под названием "databaseMapping» содержащий SCHEMA_NAME; TABLE_NAME; COLUMN_NAME. Когда пользователь просит сгенерировать sql ’Затем для конкретного файла я прочел экранный xml, связанный с этим Excel, выяснил сопоставления базы данных, а затем собрал sqls. Но я вижу проблемы в этом подходе:

1) В Excel столбцы будут соответствовать более чем одной таблице и могут иметь столбцы, разбросанные по разным листам, поэтому чтение и построение sql будет ресурсоемким занятием.

2) Само чтение Excel очень медленное (с использованием POI), поэтому производительность приложения будет падать по мере роста Excel. Я считаю, что POI не поддерживает копирование целых столбцов с разных листов и создание новой рабочей книги или листа? Если это можно сделать, то все равно будет управляемым. Чтение каждой строки, а затем каждой ячейки для создания нового временного рабочего листа в структуре таблицы db для генерации sql, мне кажется не совсем правильным.

GUI XML



    
        
            String
            3
            true
            true
            
            
            
            
        

        
            String
            10
            false
            true
            
            
            
            
        

        
            String
            15
            false
            true
            
            
            
            
        

        
            String
            3
            false
            true
            
            
            
            
        

        
            String
            3
            false
            true
            
            
            
            
        
    
    
        
            String
            3
            false
            true
            
            
            
            
        

        
            Date
            
            false
            
            
            
            
            
        

        
            String
            10
            false
            true
            
            
            ComboBoxTest_Single.xlsx - ACTION;ACTION 
            CODE_SUB_ID
            
        
    

БД XML (предлагается)



    
        varchar
        20
        Y
        
        Y
    

    
        timestamp
        
        Y
        
    

    
        varchar
        20
        Y
        
    

    
        decimal
        24
        6
        Y
        
    

    
        integer
        1
        Y
        
    

    
        varchar2
        30
        N
        
    

    
        date
        
        Y
        
    

    
        decimal
        24
        6
        N
        
    

Спасибо !!