public void ProcessETLMode(IRecordProcessor rp)
        {
            inputDatabase.Connect();
            MapFields(rp);

            rp.setDatasetName(inputDatabase.NormTableName(tableName));


            string[] sqls = rp.GetSelectStatements();

            if (Progress != null)
            {
                Progress.ReportProgress(0);
            }
            foreach (string sql in sqls)
            {
                try
                {
                    DbDataReader reader = inputDatabase.Execute(sql);
                    int          count  = 1;
                    rp.Reset();
                    //Extract
                    while (reader.Read())
                    {
                        //Transform
                        rp.ProcessRecord(reader);
                        if (Progress != null)
                        {
                            Progress.ReportProgress(0, "Read records: " + count.ToString());
                        }
                        count++;
                    }
                    reader.Close();
                    reader = null;

                    //Load
                    if (outputDatabase.FileName != null)
                    {
                        //if output is file - Write one
                        WriteData();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                // Call Close when done reading.
            }
            inputDatabase.Close();
        }