OSDN Git Service

20170617
[rapideact/rapideact.git] / com / rapide_act / RapideMetaUnloader.java
index 634324f..d09783d 100644 (file)
@@ -28,396 +28,41 @@ import java.sql.Clob;
 
 public class RapideMetaUnloader{
 
-       private static final int DB_TYPE_ORACLE = 0;
-       private static final int DB_TYPE_SQLSERVER = 1;
-       private static final int DB_TYPE_MYSQL = 2;
-       private static final int DB_TYPE_DB2 = 3;
-       private static final int DB_TYPE_POSTGRESQL = 4;
-       private static final int DB_TYPE_HIRDB = 5;
-       private static final int DB_TYPE_UNKNOWN = -1;
-       private static final int TYPE_TABLE = 0;
-       private static final int TYPE_INDEX = 1;
-       private static final int TYPE_VIEW = 2;
-       private static final int TYPE_PROCEDURE = 3;
-       private static final int TYPE_SEQ = 4;
-       private static final int TYPE_SYNONYM = 5;
-       private static final int TYPE_OBJ = 6;
-       private static final int TYPE_FK = 7;
-       private static final String [] FILE_NAME = {
-               "TABLEDEF",
-               "INDEXDEF",
-               "VIEWDEF",
-               "PROCDEF",
-               "SEQDEF",
-               "SYNMDEF",
-               "OBJDEF",
-               "FKDEF"
-       };
-       private static final String lineSeparator = System.getProperty("line.separator");
-       protected static final String [] DB_SQL_QUOTED_S = {"\"", "[", "`", "\"", "\"", "\""};
-       protected static final String [] DB_SQL_QUOTED_E = {"\"", "]", "`", "\"", "\"", "\""};
-       private static final String [] DROP_OPTION = {" CASCADE CONSTRAINT PURGE", "", "", "", "", ""};
-//     private static final String [] cp.SQL_TERMINATOR = {";", lineSeparator + "GO", ";", ";", ";", ";"};
-//     private static final String [] cp.SQL_PREFIX = {"@", ":r ", "", "", "", ""};
-       private static final String [][] sql =  {
-               {       //ORACLE
-               "select "
-                    + "a.table_name as table_name,"
-                    + "replace(replace(b.comments, chr(13), ''), chr(10), '') as table_comments,"
-                    + "c.column_name as column_name, "
-                    + "replace(replace(d.comments, chr(13), ''), chr(10), '') as column_comments, "
-                    + "decode(c.data_type, 'TIMESTAMP(6)', 'TIMESTAMP',c.data_type) as data_type, "
-                    + "c.data_length as data_length,"
-                    + "c.data_precision as data_precision,"
-                    + "c.data_scale as data_scale,"
-                    + "decode(c.nullable, 'N', '\81\9b', null) as nullable,"
-                    + "c.data_default as data_default "
-                    + "from user_tables a "
-                    + "inner join user_tab_comments b "
-                    + "on a.table_name = b.table_name "
-                    + "inner join user_tab_columns c "
-                    + "on a.table_name = c.table_name "
-                    + "inner join user_col_comments d "
-                    + "on c.table_name = d.table_name "
-                    + " and c.column_name = d.column_name "
-                    + "order by a.table_name,c.column_id",
-               "select "
-                    + " a.table_name,"
-                    + " a.index_name,"
-                    + " a.index_type,"
-                    + " c.constraint_type,"
-                    + " b.column_name,"
-                    + " b.column_position "
-                    + " from"
-                    + " user_indexes a,"
-                    + " user_ind_columns b,"
-                    + " user_constraints c "
-                    + " where"
-                    + "  a.table_name = b.table_name and"
-                    + "  a.index_name = b.index_name and"
-                    + "  a.table_name = c.table_name(+) and"
-                    + "  a.index_name = c.constraint_name(+) "
-                    + " order by"
-                    + " a.table_name,"
-                    + " a.index_name,"
-                    + " b.column_position",
-               "select "
-                    + " a.view_name, "
-                    + " replace(replace(c.comments, chr(13), ''), chr(10), '') as comments "
-                    + " from"
-                    + " user_views a, "
-                    + " user_tab_comments c "
-                    + " where"
-                       + "  a.view_name = c.table_name(+) "
-                    + " order by"
-                    + " a.view_name",
-               "select "
-                    + " object_name, "
-                    + " object_type "
-                    + "from"
-                    + " user_objects"
-                    + " where object_type in('PACKAGE BODY','PROCEDURE','FUNCTION','TRIGGER','TYPE')"
-                    + " group by object_name,object_type"
-                    + " order by object_name,object_type",
-               "select "
-                    + "  sequence_name,"
-                    + "  to_char(min_value) as min_value,"
-                    + "  to_char(max_value) as max_value,"
-                    + "  to_char(increment_by) as increment_by,"
-                    + "  cycle_flag,"
-                    + "  order_flag,"
-                    + "  to_char(cache_size) as cache_size,"
-                    + "  to_char(last_number) as last_number "
-                    + " from user_sequences "
-                    + " order by sequence_name",
-               "select "
-                    + "  synonym_name,"
-                    + "  table_owner,"
-                    + "  table_name,"
-                    + "  db_link "
-                    + "from user_synonyms "
-                    + "order by synonym_name,table_owner,table_name",
-               "select "
-                    + " a.table_name,"
-                    + " a.object_name,"
-                    + " a.object_type,"
-                    + " a.pct_free,"
-                    + " a.pct_used,"
-                    + " a.ini_trans,"
-                    + " a.freelists,"
-                    + " a.freelist_groups,"
-                    + " a.buffer_pool,"
-                    + " a.tablespace_name, "
-                    + " a.logging, "
-                    + " b.bytes "
-                    + "from "
-                    + "(select "
-                    + " table_name,"
-                    + " table_name as object_name,"
-                    + " 'TABLE' as object_type,"
-                    + " pct_free,"
-                    + " pct_used,"
-                    + " ini_trans,"
-                    + " freelists,"
-                    + " freelist_groups,"
-                    + " buffer_pool,"
-                    + " tablespace_name, "
-                    + " logging "
-                    + "from "
-                    + " user_tables "
-                    + " union select "
-                    + " table_name,"
-                    + " index_name as object_name,"
-                    + " 'INDEX' as object_type,"
-                    + " pct_free,"
-                    + " null as pct_used,"
-                    + " ini_trans,"
-                    + " freelists,"
-                    + " freelist_groups,"
-                    + " buffer_pool,"
-                    + " tablespace_name, "
-                    + " logging "
-                    + " from "
-                    + " user_indexes "
-                    + ") a, "
-                    + "(select "
-                    + " segment_name,"
-                    + " segment_type,"
-                    + " bytes "
-                    + " from "
-                    + " user_segments "
-                    + ") b "
-                    + " where a.object_name = b.segment_name "
-                    + " and a.object_type = b.segment_type "
-                    + " order by"
-                    + " a.table_name,"
-                    + " a.object_name",
-               "select "
-                    + " a.table_name as table_name, "
-                    + " a.constraint_name as constraint_name, "
-                    + " b.column_name as column_name, "
-                    + " b.position as position,"
-                    + " c.table_name as r_table_name, "
-                    + " c.constraint_name as r_constraint_name, "
-                    + " d.column_name as r_column_name, "
-                    + " d.position as r_position "
-                    + " from "
-                    + "   user_constraints a, "
-                    + "   user_cons_columns b,"
-                    + "   user_constraints c, "
-                    + "   user_cons_columns d "
-                    + " where "
-                    + "   a.constraint_type = 'R'"
-                    + "   and a.owner = b.owner"
-                    + "   and a.table_name = b.table_name"
-                    + "   and a.constraint_name = b.constraint_name"
-                    + "   and c.constraint_type in('P','U')"
-                    + "   and c.owner = b.owner"
-                    + "   and c.table_name = d.table_name"
-                    + "   and c.constraint_name = d.constraint_name"
-                    + "   and a.r_owner = c.owner"
-                    + "   and a.r_constraint_name = c.constraint_name"
-                    + " order by"
-                    + "   a.table_name,a.constraint_name,b.position,d.position"
-               },
-               {       //SQL SERVER
-               "select "
-                    + "a.name    as table_name, "
-                    + "replace(replace(cast(b.value as varchar(4000)), char(13), ''), char(10), '') as table_comments, "
-                    + "c.name    as column_name, "
-                    + "replace(replace(cast(d.value as varchar(4000)), char(13), ''), char(10), '') as column_comments, "
-                    + "e.name as data_type, "
-                    + "c.max_length as data_length, "
-                    + "c.precision as data_precision, "
-                    + "c.scale as data_scale, "
-                    + "case c.is_nullable"
-                    + "  when '0' then '\81Z'"
-                    + "  else null "
-                    + "end as nullable,"
-                    + "g.definition as data_default "
-                    + "from "
-                    + "sys.tables as a "
-                    + "left outer join sys.extended_properties as b "
-                    + "on a.object_id = b.major_id and b.minor_id = 0 "
-                    + "inner join sys.columns as c "
-                    + "on a.object_id = c.object_id "
-                    + "left outer join sys.extended_properties as d "
-                    + "on a.object_id = d.major_id and c.column_id = d.minor_id "
-                    + "inner join sys.types as e "
-                    + "on c.system_type_id = e.system_type_id and c.user_type_id = e.user_type_id "
-                    + "left outer join sys.sysconstraints f "
-                    + "on c.object_id = f.id "
-                    + "and c.column_id = f.colid "
-                    + "and (f.status & 2069) = 2069 "
-                    + "left outer join sys.default_constraints g "
-                    + "on f.constid = g.object_id "
-                    + "and a.schema_id = g.schema_id "
-                    + "order by a.name,c.column_id ",
-               "select "
-                    + "d.name as table_name, "
-                    + "a.name as index_name, "
-                    + "a.type as index_type, "
-                    + "case a.is_unique "
-                    + "  when 1 then "
-                    + "    case a.is_primary_key "
-                    + "      when 1 then 'P' "
-                    + "        else "
-                    + "            case a.is_unique_constraint "
-                    + "                when 1 then 'U' "
-                    + "                else '' "
-                    + "            end "
-                    + "    end "
-                    + "  else '' "
-                    + "end as constraint_type, "
-                    + "c.name as column_name, "
-                    + "b.key_ordinal as column_position "
-                    + "from "
-                    + "  sys.indexes as a "
-                    + "  inner join sys.index_columns as b "
-                    + "      on a.object_id = b.object_id and a.index_id = b.index_id "
-                    + "  inner join sys.columns as c "
-                    + "      on c.column_id = b.column_id "
-                    + "         and c.object_id = b.object_id "
-                    + "  inner join sys.objects as d "
-                    + "      on a.object_id = d.object_id and d.type = 'U' "
-                    + "order by d.name, a.name,b.key_ordinal",
-               "select "
-                    + " a.name as view_name, "
-                    + " replace(replace(cast(b.value as varchar(4000)), char(13), ''), char(10), '') as comments "
-                    + "from "
-                    + " sys.views a "
-                    + " left outer join sys.extended_properties as b "
-                    + " on a.object_id = b.major_id and b.minor_id = 0 "
-                    + "order by "
-                    + " a.name",
-               "select "
-                    + " name as object_name, 'PROCEDURE' as object_type from sys.procedures"
-                    + " union select "
-                    + " name as object_name, 'FUNCTION' as object_type from sys.objects where type in('FN', 'FS', 'FT', 'IF', 'TF') "
-                    + " union select "
-                    + " name as object_name, 'TRIGGER' as object_type from sys.triggers "
-                    + " order by object_name,object_type ",
-               "select "
-                    + "  name as sequence_name,"
-                    + "  cast(minimum_value as varchar(20)) as min_value,"
-                    + "  cast(maximum_value as varchar(20)) as max_value,"
-                    + "  cast(increment as varchar(20)) as increment_by,"
-                    + "  is_cycling as cycle_flag,"
-                    + "  is_cached as order_flag,"
-                    + "  cast(cache_size as varchar(20)) as cache_size,"
-                    + "  cast(start_value as varchar(20)) as last_number "
-                    + " from sys.sequences "
-                    + " order by name",
-               "select "
-                    + " name as synonym_name,"
-                    + " schema_id as table_owner,"
-                    + " base_object_name as table_name,"
-                    + " '' as db_link "
-                    + "from sys.synonyms "
-                    + "order by synonym_name,table_owner,table_name",
-               "select "
-                    + " c.name as table_name, "
-                    + " b.index_id, "
-                    + " d.name as index_name , "
-                    + " a.type_desc as allocation_type, "
-                    + " a.data_pages, "
-                    + " partition_number "
-                    + "from "
-                    + " sys.allocation_units as a "
-                    + " inner join sys.partitions as b "
-                    + " on a.container_id = b.partition_id "
-                    + " inner join sys.objects as c "
-                    + " on b.object_id = c.object_id and c.type = 'U' "
-                    + " inner join sys.indexes as d "
-                    + " on b.index_id = d.index_id and d.object_id = b.object_id "
-                    + "order by c.name, b.index_id",
-               "select "
-                    + " c.name as table_name, "
-                    + " a.name as constraint_name, "
-                    + " d.name as column_name, "
-                    + " b.constraint_column_id as position, "
-                    + " e.name as r_table_name, "
-                    + " g.name as r_constraint_name, "
-                    + " f.name as r_column_name ,"
-                    + " f.column_id as r_position "
-                    + "from sys.foreign_keys as a "
-                    + " inner join sys.foreign_key_columns as b "
-                    + "     on a.object_id = b.constraint_object_id "
-                    + " inner join sys.tables as c "
-                    + "     on b.parent_object_id = c.object_id "
-                    + " inner join sys.columns as d "
-                    + "     on b.parent_object_id = d.object_id and "
-                    + "         b.parent_column_id = d.column_id "
-                    + " inner join sys.tables as e "
-                    + "     on b.referenced_object_id = e.object_id "
-                    + " inner join sys.columns as f "
-                    + "     on b.referenced_object_id = f.object_id and "
-                    + "         b.referenced_column_id = f.column_id "
-                    + " inner join sys.key_constraints as g "
-                    + "     on a.referenced_object_id = g.parent_object_id "
-                    + "order by table_name,constraint_name, position"
-               }
-       };
-       private static String sql_view_text[] = {
-               "select text from user_views where view_name = ?",
-               "select c.definition "
-                    + "from sys.views a "
-                    + "inner join sys.objects b "
-                    + "on  b.object_id = a.object_id "
-                    + "inner join sys.sql_modules c "
-                    + "on  c.object_id = b.object_id "
-                    + "where a.name = ?"
-       };
-       private static String sql_view_column_and_comment[] = {
-               "select "
-            + " b.column_name,"
-            + " replace(replace(d.comments, chr(13), ''), chr(10), '') as comments "
-            + " from"
-            + " user_tab_columns b,"
-            + " user_col_comments d "
-            + " where"
-            + "  b.table_name = ? and"
-            + "  b.table_name = d.table_name(+) and"
-            + "  b.column_name = d.column_name(+) "
-            + " order by"
-            + " b.column_id",
-           " select "
-            + " b.name as column_name, "
-            + " '' as comments "
-            + " from "
-            + " sys.objects a "
-            + " inner join sys.columns b on a.object_id = b.object_id and a.name = ? "
-            + " inner join sys.types c on b.system_type_id = c.system_type_id "
-            + " where a.type = 'V' "
-            + " and c.user_type_id <> 256 "
-            + " order by b.column_id"
-       };
-       private static String sql_proc[] = {
-               "select text from user_source where type = ? and name = ? order by line",
-               "select d.definition "
-                    + "from "
-                    + " (select a.name,'PROCEDURE' as type,c.definition "
-                    + "from sys.procedures a "
-                    + "inner join sys.objects b "
-                    + "on b.object_id = a.object_id "
-                    + "inner join sys.sql_modules c "
-                    + "on  c.object_id = b.object_id "
-                    + "union select "
-                    + " a.name,'FUNCTION' as type,c.definition "
-                    + "from sys.objects a "
-                    + "inner join sys.objects b "
-                    + "on  b.object_id = a.object_id "
-                    + "inner join sys.sql_modules c "
-                    + "on  c.object_id = b.object_id and a.type in('FN', 'FS', 'FT', 'IF', 'TF') "
-                    + "union select "
-                    + "a.name,'TRIGGER' as type,c.definition "
-                    + "from sys.triggers a "
-                    + "inner join sys.objects b "
-                    + "on  b.object_id = a.object_id "
-                    + "inner join sys.sql_modules c "
-                    + "on  c.object_id = b.object_id) d "
-                    + "where d.type = ? and d.name = ?"
-       };
+       private static final int CONTENTS = 0;
+       private static final int CREATE = 1;
+       private static final int DROP = 2;
+       private static final int TRUNCATE = 3;
+
+       private static final int WK_FILE = 0;
+       private static final int R_CREATE_PKEY = 1;
+       private static final int R_CREATE_UKEY = 2;
+       private static final int R_CREATE_INDEX = 3;
+       private static final int W_CREATE_PKEY = 0;
+       private static final int W_CREATE_UKEY = 1;
+       private static final int W_CREATE_INDEX = 2;
+       private static final int W_DROP_PKEY = 3;
+       private static final int W_DROP_UKEY = 4;
+       private static final int W_DROP_INDEX = 5;
+
+       private static final int LINE = 0;
+       private static final int TBL_CONTENTS = 1;
+       private static final int TBL_COMMENTS = 2;
+       private static final int IDX_CONTENTS_1 = 1;
+       private static final int IDX_CONTENTS_2 = 2;
+       private static final int IDX_CONTENTS_3 = 3;
+
+       private static final int COL01 = 0;
+       private static final int COL02 = 1;
+       private static final int COL03 = 2;
+       private static final int COL04 = 3;
+       private static final int COL05 = 4;
+       private static final int COL06 = 5;
+       private static final int COL07 = 6;
+       private static final int COL08 = 7;
+       private static final int COL09 = 8;
+       private static final int COL10 = 9;
+       private static final int COL11 = 10;
+       private static final int COL12 = 11;
 
        private String database = null;
        private String phyfileExtension = "phy";
@@ -524,16 +169,16 @@ public class RapideMetaUnloader{
                        cp = new CmnProps();
                        cp.setProperty(database);
                        
-                       if (cp.dbType > cp.DB_TYPE_SQLSERVER || cp.dbType <0){
+                       if (cp.dbType > cp.DB_TYPE_MYSQL || cp.dbType <0){
                                throw new Exception("\83f\81[\83^\83x\81[\83X\82ª\91ÃŽ\8fÛ\8aO\82Ã…\82·\81B[" + cp.DB_TYPE_NAME[cp.dbType] + "]");
                        }
                        if(cp.outFolder != null){
                                folder = new File(cp.outFolder);
                        } else {
                                if(database != null){
-                                       folder = new File(cp.DEFAULT_OUT_FOLDER + "/DDL_" + database.toUpperCase() + "_" + CmnUtils.getYmdhm());
+                                       folder = new File(cp.DEFAULT_OUT_FOLDER + "/" + cp.metaFolder + "_" + database.toUpperCase() + "_" + CmnUtils.getYmdhm());
                                } else {
-                                       folder = new File(cp.DEFAULT_OUT_FOLDER + "/DDL_" + cp.DB_TYPE_NAME[cp.dbType].toUpperCase() + "_" + CmnUtils.getYmdhm());
+                                       folder = new File(cp.DEFAULT_OUT_FOLDER + "/" + cp.metaFolder + "_" + cp.DB_TYPE_NAME[cp.dbType].toUpperCase() + "_" + CmnUtils.getYmdhm());
                                }
                                folder.mkdir();
                        }
@@ -545,19 +190,23 @@ public class RapideMetaUnloader{
                        dao = new CmnAccessObjects(cp);
                        conn = dao.connect();
                        // Def tsv Writing start
-                       for(int i=0;i<sql[cp.dbType].length;i++){
-                               dao.select(sql[cp.dbType][i]);
-                               CmnUtils.writeSeparator(folder + "/" + FILE_NAME[i] + "_" + database +"." + cp.fileExtension, dao.getColumnCount(), dao.getArrayList(), cp.delimiter);
+                       for(int i=0;i<cp.meta_sql[cp.dbType].length;i++){
+                               if(!cp.meta_sql[cp.dbType][i].equals("")){
+                                       dao.select(cp.meta_sql[cp.dbType][i]);
+                                       CmnUtils.writeSeparator(folder + "/" + cp.WK_FILE_NAME[i] + "_" + database +"." + cp.fileExtension, dao.getColumnCount(), dao.getArrayList(), cp.delimiter);
+                               } else {
+                                       CmnUtils.emptyFile(folder + "/" + cp.WK_FILE_NAME[i] + "_" + database +"." + cp.fileExtension);
+                               }
                        }
                        // Def tsv Writing end
 
                        // Table Contents start
-                       br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_TABLE] + "_" + database + "." + cp.fileExtension));
+                       br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_TABLE] + "_" + database + "." + cp.fileExtension));
                        subFolder = new File(folder + "/TABLES");
                        subFolder.mkdir();
-                       pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_TABLE]))));
-                       pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_TABLE]))));
-                       pw[3] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.TRUNCATE_TABLE]))));
+                       pw[CREATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_TABLE]))));
+                       pw[DROP] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_TABLE]))));
+                       pw[TRUNCATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.TRUNCATE_TABLE]))));
 
                        tableName = "";
                        tableCmnt = "";
@@ -572,17 +221,17 @@ public class RapideMetaUnloader{
 
                        StringBuffer sbTbCnts = new StringBuffer();
                        StringBuffer sbTbCmnt = new StringBuffer();
-                       while((strLine=br[0].readLine()) != null){
+                       while((strLine=br[WK_FILE].readLine()) != null){
                                if(!strLine.equals("")){
-                                       strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
+                                       strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
                                        if (!tableName.equals("")){
-                                               sbTbCnts.append("    " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                               sbTbCnts.append("    " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                sbTbCnts.append(" " + colType);
-                                               if(!colCmnt.equals(""))sbTbCmnt.append(commentOnColumn(cp, tableName, colName, colCmnt, TYPE_TABLE));
-                                               if(!colCmnt.equals(""))sbTbCmnt.append(lineSeparator);
+                                               if(!colCmnt.equals(""))sbTbCmnt.append(commentOnColumn(cp, tableName, colName, colCmnt, cp.TYPE_TABLE));
+                                               if(!colCmnt.equals(""))sbTbCmnt.append(cp.lineSeparator);
                                                if(CmnUtils.isColPrec(colType, colPrec)){
                                                        sbTbCnts.append("(" + colPrec);
-                                                       if (!colScale.equals("") && !colScale.equals("0"))sbTbCnts.append("," + colScale);
+                                                       if (!CmnUtils.isEmpty(colScale) && !colScale.equals("0"))sbTbCnts.append("," + colScale);
                                                        sbTbCnts.append(")");
                                                } else if (CmnUtils.isColLength(colType)){
                                                        if(colLen.equals("-1")){
@@ -591,71 +240,88 @@ public class RapideMetaUnloader{
                                                                sbTbCnts.append("(" + CmnUtils.getColLength(colType, colLen) + ")");
                                                        }
                                                }
-                                               if (!colDflt.equals(""))sbTbCnts.append(" DEFAULT " + colDflt.trim());
-                                               if (!colNoN.equals("")){
+                                               if (!CmnUtils.isEmpty(colDflt)){
+                                                       if(CmnUtils.split(strLine, cp.SQL_COMMENT_MARK[cp.dbType]).length > 0){
+                                                               String [] colDfltAry = CmnUtils.split(colDflt, cp.SQL_COMMENT_MARK[cp.dbType]);
+                                                               if (cp.dbType == cp.DB_TYPE_MYSQL && !CmnUtils.isReserved(colDfltAry[0].trim())){
+                                                                       sbTbCnts.append(" DEFAULT '" + colDfltAry[0].trim() + "'");
+                                                               } else {
+                                                                       sbTbCnts.append(" DEFAULT " + colDfltAry[0].trim());
+                                                               }
+                                                       } else {
+                                                               if (cp.dbType == cp.DB_TYPE_MYSQL && !CmnUtils.isReserved(colDflt.trim())){
+                                                                       sbTbCnts.append(" DEFAULT " + colDflt.trim() + "'");
+                                                               } else {
+                                                                       sbTbCnts.append(" DEFAULT " + colDflt.trim());
+                                                               }
+                                                       }
+                                               }
+                                               if (!CmnUtils.isEmpty(colNoN)){
                                                        sbTbCnts.append(" NOT NULL");
                                                } else {
                                                        sbTbCnts.append(" NULL");
                                                }
-                                               if (!strSplit[0][0].equals(tableName)){
-                                                       pw[1].println(cp.SQL_PREFIX[cp.dbType] + "TABLES/" + tableName + ".sql");
-                                                       pw[2].println("DROP TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tableName + DB_SQL_QUOTED_E[cp.dbType]+ DROP_OPTION[cp.dbType] + cp.SQL_TERMINATOR[cp.dbType]);
-                                                       pw[3].println("TRUNCATE TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tableName + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                                                       sbTbCnts.append(lineSeparator);
+                                               if (!strSplit[LINE][COL01].equals(tableName)){
+                                                       pw[CREATE].println(cp.SQL_PREFIX[cp.dbType] + "TABLES/" + tableName + ".sql");
+                                                       pw[DROP].print("DROP TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tableName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.DROP_OPTION[cp.dbType] + cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[TRUNCATE].print("TRUNCATE TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tableName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                                       sbTbCnts.append(cp.lineSeparator);
                                                        sbTbCnts.append(")" + cp.SQL_TERMINATOR[cp.dbType]);
-                                                       sbTbCnts.append(lineSeparator);
-                                                       pw[0] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + tableName + ".sql"))));
-                                                       strSplit[1] = CmnUtils.split(sbTbCnts.toString(), lineSeparator);
-                                                       for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[0].println(strSplit[1][i]);
-                                                       strSplit[2] = CmnUtils.split(sbTbCmnt.toString(), lineSeparator);
-                                                       for(int i=0;i<strSplit[2].length;i++)if(!strSplit[2][i].trim().equals(""))pw[0].println(strSplit[2][i]);
-                                                       pw[0].close();
-                                                       pw[0] = null;
+                                                       sbTbCnts.append(cp.lineSeparator);
+                                                       pw[CONTENTS] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + tableName + ".sql"))));
+                                                       strSplit[TBL_CONTENTS] = CmnUtils.split(sbTbCnts.toString(), cp.lineSeparator);
+                                                       for(int i=0;i<strSplit[TBL_CONTENTS].length;i++)if(!strSplit[TBL_CONTENTS][i].trim().equals(""))pw[CONTENTS].println(strSplit[TBL_CONTENTS][i]);
+                                                       strSplit[TBL_COMMENTS] = CmnUtils.split(sbTbCmnt.toString(), cp.lineSeparator);
+                                                       for(int i=0;i<strSplit[TBL_COMMENTS].length;i++)if(!strSplit[TBL_COMMENTS][i].trim().equals(""))pw[CONTENTS].println(strSplit[TBL_COMMENTS][i]);
+                                                       pw[CONTENTS].close();
+                                                       pw[CONTENTS] = null;
                                                        CmnUtils.infoPrint(String.format("%1$-30s",tableName) + " \83\81\83^\83f\81[\83^\82ª\83A\83\93\83\8d\81[\83h\82³\82ê\82Ãœ\82µ\82½\81B");
                                                        sbTbCnts = new StringBuffer();
                                                        sbTbCmnt = new StringBuffer();
-                                                       sbTbCnts.append("CREATE TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]);
-                                                       sbTbCnts.append(lineSeparator);
+                                                       sbTbCnts.append("CREATE TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                                       sbTbCnts.append(cp.lineSeparator);
                                                        sbTbCnts.append("(");
-                                                       sbTbCnts.append(lineSeparator);
-                                                       if(!strSplit[0][1].equals(""))sbTbCmnt.append(commentOnTable(cp, strSplit[0][0], strSplit[0][1], TYPE_TABLE));
-                                                       if(!strSplit[0][1].equals(""))sbTbCmnt.append(lineSeparator);
+                                                       sbTbCnts.append(cp.lineSeparator);
+                                                       if(!CmnUtils.isEmpty(strSplit[LINE][COL02]))sbTbCmnt.append(commentOnTable(cp, strSplit[LINE][COL01], strSplit[LINE][COL02], cp.TYPE_TABLE));
+                                                       if(!CmnUtils.isEmpty(strSplit[LINE][COL02]))sbTbCmnt.append(cp.lineSeparator);
                                                } else {
                                                        sbTbCnts.append(",");
-                                                       sbTbCnts.append(lineSeparator);
+                                                       sbTbCnts.append(cp.lineSeparator);
                                                }
                                        }
                                        else {
-                                               sbTbCnts.append("CREATE TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]);
-                                               sbTbCnts.append(lineSeparator);
+                                               sbTbCnts.append("CREATE TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                               sbTbCnts.append(cp.lineSeparator);
                                                sbTbCnts.append("(");
-                                               sbTbCnts.append(lineSeparator);
-                                               if(!strSplit[0][1].equals(""))sbTbCmnt.append(commentOnTable(cp, strSplit[0][0], strSplit[0][1], TYPE_TABLE));
-                                               if(!strSplit[0][1].equals(""))sbTbCmnt.append(lineSeparator);
+                                               sbTbCnts.append(cp.lineSeparator);
+                                               if(!CmnUtils.isEmpty(strSplit[LINE][COL02]))sbTbCmnt.append(commentOnTable(cp, strSplit[LINE][COL01], strSplit[LINE][COL02], cp.TYPE_TABLE));
+                                               if(!CmnUtils.isEmpty(strSplit[LINE][COL02]))sbTbCmnt.append(cp.lineSeparator);
                                        }
-                                       for(int i=0;i<strSplit[0].length;i++)CmnUtils.debugPrint("'" + strSplit[0][i] + "'");
+                                       for(int i=0;i<strSplit[LINE].length;i++)CmnUtils.debugPrint("'" + strSplit[LINE][i] + "'");
 
-                                       tableName = strSplit[0][0];
-                                       tableCmnt = strSplit[0][1];
-                                       colName = strSplit[0][2];
-                                       colCmnt = strSplit[0][3];
-                                       colType = strSplit[0][4];
-                                       colLen = strSplit[0][5];
-                                       colPrec = strSplit[0][6];
-                                       colScale = strSplit[0][7];
-                                       colNoN = strSplit[0][8];
-                                       colDflt = strSplit[0][9];
+                                       tableName = strSplit[LINE][COL01];
+                                       tableCmnt = strSplit[LINE][COL02];
+                                       colName = strSplit[LINE][COL03];
+                                       colCmnt = strSplit[LINE][COL04];
+                                       colType = strSplit[LINE][COL05];
+                                       colLen = strSplit[LINE][COL06];
+                                       colPrec = strSplit[LINE][COL07];
+                                       colScale = strSplit[LINE][COL08];
+                                       colNoN = strSplit[LINE][COL09];
+                                       colDflt = strSplit[LINE][COL10];
                                }
                        }
 
                        if (!tableName.equals("")){
-                               sbTbCnts.append("    " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                               sbTbCnts.append("    " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                sbTbCnts.append(" " + colType);
-                               if(!colCmnt.equals(""))sbTbCmnt.append(commentOnColumn(cp, tableName, colName, colCmnt, TYPE_TABLE));
-                               if(!colCmnt.equals(""))sbTbCmnt.append(lineSeparator);
+                               if(!colCmnt.equals("")){
+                                       sbTbCmnt.append(commentOnColumn(cp, tableName, colName, colCmnt, cp.TYPE_TABLE));
+                                       sbTbCmnt.append(cp.lineSeparator);
+                               }
                                if(CmnUtils.isColPrec(colType, colPrec)){
                                        sbTbCnts.append("(" + colPrec);
-                                       if (!colScale.equals("") && !colScale.equals("0"))sbTbCnts.append("," + colScale);
+                                       if (!CmnUtils.isEmpty(colScale) && !CmnUtils.isEmpty(colScale))sbTbCnts.append("," + colScale);
                                        sbTbCnts.append(")");
                                } else if (CmnUtils.isColLength(colType)){
                                        if(colLen.equals("-1")){
@@ -664,41 +330,51 @@ public class RapideMetaUnloader{
                                                sbTbCnts.append("(" + CmnUtils.getColLength(colType, colLen) + ")");
                                        }
                                }
-                               if (!colDflt.equals(""))sbTbCnts.append(" DEFAULT " + colDflt.trim());
-                               if (!colNoN.equals("")){
+                               if (!CmnUtils.isEmpty(colDflt)){
+                                       if (cp.dbType == cp.DB_TYPE_MYSQL && !CmnUtils.isReserved(colDflt.trim())){
+                                               sbTbCnts.append(" DEFAULT '" + colDflt.trim() + "'");
+                                       } else {
+                                               sbTbCnts.append(" DEFAULT " + colDflt.trim());
+                                       }
+                               }
+                               if (!CmnUtils.isEmpty(colNoN)){
                                        sbTbCnts.append(" NOT NULL");
                                } else {
                                        sbTbCnts.append(" NULL");
                                }
-                               pw[1].println(cp.SQL_PREFIX[cp.dbType] + "TABLES/" + tableName + ".sql");
-                               pw[2].println("DROP TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tableName + DB_SQL_QUOTED_E[cp.dbType]+ DROP_OPTION[cp.dbType] + cp.SQL_TERMINATOR[cp.dbType]);
-                               pw[3].println("TRUNCATE TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tableName + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                               sbTbCnts.append(lineSeparator);
+                               pw[CREATE].println(cp.SQL_PREFIX[cp.dbType] + "TABLES/" + tableName + ".sql");
+                               pw[DROP].print("DROP TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tableName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.DROP_OPTION[cp.dbType] + cp.SQL_TERMINATOR[cp.dbType]);
+                               pw[TRUNCATE].print("TRUNCATE TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tableName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                               sbTbCnts.append(cp.lineSeparator);
                                sbTbCnts.append(")" + cp.SQL_TERMINATOR[cp.dbType]);
-                               sbTbCnts.append(lineSeparator);
-                               pw[0] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + tableName + ".sql"))));
-                               strSplit[1] = CmnUtils.split(sbTbCnts.toString(), lineSeparator);
-                               for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[0].println(strSplit[1][i]);
-                               strSplit[2] = CmnUtils.split(sbTbCmnt.toString(), lineSeparator);
-                               for(int i=0;i<strSplit[2].length;i++)if(!strSplit[2][i].trim().equals(""))pw[0].println(strSplit[2][i]);
-                               pw[0].close();
-                               pw[0] = null;
+                               sbTbCnts.append(cp.lineSeparator);
+                               pw[CONTENTS] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + tableName + ".sql"))));
+                               strSplit[TBL_CONTENTS] = CmnUtils.split(sbTbCnts.toString(), cp.lineSeparator);
+                               for(int i=0;i<strSplit[TBL_CONTENTS].length;i++)if(!strSplit[TBL_CONTENTS][i].trim().equals(""))pw[CONTENTS].println(strSplit[TBL_CONTENTS][i]);
+                               strSplit[TBL_COMMENTS] = CmnUtils.split(sbTbCmnt.toString(), cp.lineSeparator);
+                               for(int i=0;i<strSplit[TBL_COMMENTS].length;i++)if(!strSplit[TBL_COMMENTS][i].trim().equals(""))pw[CONTENTS].println(strSplit[TBL_COMMENTS][i]);
+                               pw[CONTENTS].close();
+                               pw[CONTENTS] = null;
                                CmnUtils.infoPrint(String.format("%1$-30s",tableName) + " \83\81\83^\83f\81[\83^\82ª\83A\83\93\83\8d\81[\83h\82³\82ê\82Ãœ\82µ\82½\81B");
                        }
-                       for(int i=1;i<4;i++)pw[i].close();
-                       for(int i=1;i<4;i++)pw[i]=null;
-                       br[0].close();
-                       br[0] = null;
+                       for(int i=0;i<pw.length;i++){
+                               if(pw[i]!=null){
+                                       pw[i].close();
+                                       pw[i]=null;
+                               }
+                       }
+                       br[WK_FILE].close();
+                       br[WK_FILE] = null;
                        // Table Contents end
 
                        // Index Contents start
-                       br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_INDEX] + "_" + database + "." + cp.fileExtension));
-                       pw[0] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY]))));
-                       pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY]))));
-                       pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX]))));
-                       pw[3] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_PKEY]))));
-                       pw[4] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_UKEY]))));
-                       pw[5] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_INDEX]))));
+                       br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_INDEX] + "_" + database + "." + cp.fileExtension));
+                       pw[W_CREATE_PKEY] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY]))));
+                       pw[W_CREATE_UKEY] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY]))));
+                       pw[W_CREATE_INDEX] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX]))));
+                       pw[W_DROP_PKEY] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_PKEY]))));
+                       pw[W_DROP_UKEY] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_UKEY]))));
+                       pw[W_DROP_INDEX] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_INDEX]))));
 
                        //Initial Process
                        tableName = "";
@@ -712,43 +388,43 @@ public class RapideMetaUnloader{
                        StringBuffer sbIx3Cnts = new StringBuffer();
 
                        //Loop Process
-                       while((strLine=br[0].readLine()) != null){
+                       while((strLine=br[WK_FILE].readLine()) != null){
                                if(!strLine.equals("")){
-                                       strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
+                                       strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
                                        //Not 1st Line Process
                                        if (!indexName.equals("")){
-                                               if (!strSplit[0][1].equals(indexName)){
+                                               if (!strSplit[LINE][COL02].equals(indexName) || !strSplit[LINE][COL01].equals(tableName)){
                                                        //Post Process
                                                        if (colPos.equals("1")){
-                                                               sbIxCnts.append(DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
-                                                               if (constraintType.equals("U"))sbIx2Cnts.append(DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                                               sbIxCnts.append(cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                                               if (constraintType.equals("U"))sbIx2Cnts.append(cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                        } else {
-                                                               sbIxCnts.append(", " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
-                                                               if (constraintType.equals("U"))sbIx2Cnts.append(", " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                                               sbIxCnts.append(", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                                               if (constraintType.equals("U"))sbIx2Cnts.append(", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                        }
                                                        sbIxCnts.append(")" + cp.SQL_TERMINATOR[cp.dbType]);
-                                                       sbIxCnts.append(lineSeparator);
+                                                       sbIxCnts.append(cp.lineSeparator);
                                                        if (constraintType.equals("U"))sbIx2Cnts.append(")" + cp.SQL_TERMINATOR[cp.dbType]);
-                                                       sbIx2Cnts.append(lineSeparator);
-                                                       sbIx3Cnts.append(lineSeparator);
+                                                       sbIx2Cnts.append(cp.lineSeparator);
+                                                       sbIx3Cnts.append(cp.lineSeparator);
 
                                                        //Write Buffer
                                                        if (constraintType.equals("P")){
-                                                               strSplit[1] = CmnUtils.split(sbIxCnts.toString(), lineSeparator);
-                                                               for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[0].println(strSplit[1][i]);
-                                                               strSplit[2] = CmnUtils.split(sbIx2Cnts.toString(), lineSeparator);
-                                                               for(int i=0;i<strSplit[2].length;i++)if(!strSplit[2][i].trim().equals(""))pw[3].println(strSplit[2][i]);
+                                                               strSplit[IDX_CONTENTS_1] = CmnUtils.split(sbIxCnts.toString(), cp.lineSeparator);
+                                                               for(int i=0;i<strSplit[IDX_CONTENTS_1].length;i++)if(!strSplit[IDX_CONTENTS_1][i].trim().equals(""))pw[W_CREATE_PKEY].println(strSplit[IDX_CONTENTS_1][i]);
+                                                               strSplit[IDX_CONTENTS_2] = CmnUtils.split(sbIx2Cnts.toString(), cp.lineSeparator);
+                                                               for(int i=0;i<strSplit[IDX_CONTENTS_2].length;i++)if(!strSplit[IDX_CONTENTS_2][i].trim().equals(""))pw[W_DROP_PKEY].println(strSplit[IDX_CONTENTS_2][i]);
                                                        } else if (constraintType.equals("U")){
-                                                               strSplit[1] = CmnUtils.split(sbIxCnts.toString(), lineSeparator);
-                                                               for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[1].println(strSplit[1][i]);
-                                                               strSplit[2] = CmnUtils.split(sbIx2Cnts.toString(), lineSeparator);
-                                                               for(int i=0;i<strSplit[2].length;i++)if(!strSplit[2][i].trim().equals(""))pw[4].println(strSplit[2][i]);
-                                                       } else if (constraintType.equals("")){
-                                                               strSplit[1] = CmnUtils.split(sbIxCnts.toString(), lineSeparator);
-                                                               for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[2].println(strSplit[1][i]);
+                                                               strSplit[IDX_CONTENTS_1] = CmnUtils.split(sbIxCnts.toString(), cp.lineSeparator);
+                                                               for(int i=0;i<strSplit[IDX_CONTENTS_1].length;i++)if(!strSplit[IDX_CONTENTS_1][i].trim().equals(""))pw[W_CREATE_UKEY].println(strSplit[IDX_CONTENTS_1][i]);
+                                                               strSplit[IDX_CONTENTS_2] = CmnUtils.split(sbIx2Cnts.toString(), cp.lineSeparator);
+                                                               for(int i=0;i<strSplit[IDX_CONTENTS_2].length;i++)if(!strSplit[IDX_CONTENTS_2][i].trim().equals(""))pw[W_DROP_UKEY].println(strSplit[IDX_CONTENTS_2][i]);
+                                                       } else {
+                                                               strSplit[IDX_CONTENTS_1] = CmnUtils.split(sbIxCnts.toString(), cp.lineSeparator);
+                                                               for(int i=0;i<strSplit[IDX_CONTENTS_1].length;i++)if(!strSplit[IDX_CONTENTS_1][i].trim().equals(""))pw[W_CREATE_INDEX].println(strSplit[IDX_CONTENTS_1][i]);
                                                        }
-                                                       strSplit[3] = CmnUtils.split(sbIx3Cnts.toString(), lineSeparator);
-                                                       for(int i=0;i<strSplit[3].length;i++)if(!strSplit[3][i].trim().equals(""))pw[5].println(strSplit[3][i]);
+                                                       strSplit[IDX_CONTENTS_3] = CmnUtils.split(sbIx3Cnts.toString(), cp.lineSeparator);
+                                                       for(int i=0;i<strSplit[IDX_CONTENTS_3].length;i++)if(!strSplit[IDX_CONTENTS_3][i].trim().equals(""))pw[W_DROP_INDEX].println(strSplit[IDX_CONTENTS_3][i]);
 
                                                        //Initial Process
                                                        sbIxCnts = new StringBuffer();
@@ -756,462 +432,583 @@ public class RapideMetaUnloader{
                                                        sbIx3Cnts = new StringBuffer();
 
                                                        //Index Changed Process
-                                                       if (strSplit[0][3].equals("P")){
-                                                               sbIxCnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " ADD CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ " PRIMARY KEY(");
-                                                               sbIx2Cnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " DROP CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                                                       } else if (strSplit[0][3].equals("U")){
-                                                               sbIxCnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " ADD CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ " UNIQUE(");
-                                                               sbIx2Cnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " DROP UNIQUE(");
-                                                       } else if (strSplit[0][3].equals("")){
-                                                               sbIxCnts.append("CREATE INDEX " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ " ON " + strSplit[0][0] + "(");
+                                                       if (strSplit[LINE][COL04].equals("P")){
+                                                               if (cp.dbType == cp.DB_TYPE_MYSQL){
+                                                                       sbIxCnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT PRIMARY KEY(");
+                                                                       sbIx2Cnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP PRIMARY KEY" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                               } else {
+                                                                       sbIxCnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " PRIMARY KEY(");
+                                                                       sbIx2Cnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                                               }
+                                                       } else if (strSplit[LINE][COL04].equals("U")){
+                                                               sbIxCnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " UNIQUE(");
+                                                               sbIx2Cnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP UNIQUE(");
+                                                       } else {
+                                                               if (cp.dbType == cp.DB_TYPE_MYSQL && !strSplit[LINE][COL03].equals("") && !strSplit[LINE][COL03].equals("BTREE")){
+                                                                       sbIxCnts.append("CREATE " + strSplit[LINE][COL03] + " INDEX " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ON " + strSplit[LINE][COL01] + "(");
+                                                               } else {
+                                                                       sbIxCnts.append("CREATE INDEX " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ON " + strSplit[LINE][COL01] + "(");
+                                                               }
                                                        }
-                                                       sbIx3Cnts.append("DROP INDEX " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                                               } else if (strSplit[0][1].equals(indexName)){
+                                                       sbIx3Cnts.append("DROP INDEX " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                               } else if (strSplit[LINE][COL02].equals(indexName) && strSplit[LINE][COL01].equals(tableName)){
                                                        if (colPos.equals("1")){
-                                                               sbIxCnts.append(DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
-                                                               if (constraintType.equals("U"))sbIx2Cnts.append(DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                                               sbIxCnts.append(cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                                               if (constraintType.equals("U"))sbIx2Cnts.append(cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                        } else {
-                                                               sbIxCnts.append(", " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
-                                                               if (constraintType.equals("U"))sbIx2Cnts.append(", " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                                               sbIxCnts.append(", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                                               if (constraintType.equals("U"))sbIx2Cnts.append(", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                        }
                                                }
                                        }
 
                                        //1st Line Process
                                        else {
-                                               if (strSplit[0][3].equals("P")){
-                                                       sbIxCnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " ADD CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ " PRIMARY KEY(");
-                                                       sbIx2Cnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " DROP CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                                               } else if (strSplit[0][3].equals("U")){
-                                                       sbIxCnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " ADD CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ " UNIQUE(");
-                                                       sbIx2Cnts.append("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ " DROP UNIQUE(");
-                                               } else if (strSplit[0][3].equals("")){
-                                                       sbIxCnts.append("CREATE INDEX " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ " ON " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ "(");
+                                               if (strSplit[LINE][COL04].equals("P")){
+                                                       if (cp.dbType == cp.DB_TYPE_MYSQL){
+                                                               sbIxCnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT  PRIMARY KEY(");
+                                                               sbIx2Cnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP PRIMARY KEY" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                       } else {
+                                                               sbIxCnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " PRIMARY KEY(");
+                                                               sbIx2Cnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                                       }
+                                               } else if (strSplit[LINE][COL04].equals("U")){
+                                                       sbIxCnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " UNIQUE(");
+                                                       sbIx2Cnts.append("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP UNIQUE(");
+                                               } else {
+                                                       if (cp.dbType == cp.DB_TYPE_MYSQL && !strSplit[LINE][COL03].equals("") && !strSplit[LINE][COL03].equals("BTREE")){
+                                                               sbIxCnts.append("CREATE " + strSplit[LINE][COL03] + " INDEX " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ON " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ "(");
+                                                       } else {
+                                                               sbIxCnts.append("CREATE INDEX " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ON " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ "(");
+                                                       }
                                                }
-                                               sbIx3Cnts.append("DROP INDEX " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][1] + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                               sbIx3Cnts.append("DROP INDEX " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL02] + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
                                        }
-                                       for(int i=0;i<strSplit[0].length;i++)CmnUtils.debugPrint("'" + strSplit[0][i] + "'");
+                                       for(int i=0;i<strSplit[LINE].length;i++)CmnUtils.debugPrint("'" + strSplit[LINE][i] + "'");
 
-                                       tableName = strSplit[0][0];
-                                       indexName = strSplit[0][1];
-                                       indexType = strSplit[0][2];
-                                       constraintType = strSplit[0][3];
-                                       colName = strSplit[0][4];
-                                       colPos = strSplit[0][5];
+                                       tableName = strSplit[LINE][COL01];
+                                       indexName = strSplit[LINE][COL02];
+                                       indexType = strSplit[LINE][COL03];
+                                       constraintType = strSplit[LINE][COL04];
+                                       colName = strSplit[LINE][COL05];
+                                       colPos = strSplit[LINE][COL06];
                                }
                        }
                        if (!indexName.equals("")){
                                //Post Process
                                if (colPos.equals("1")){
-                                       sbIxCnts.append(DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
-                                       if (constraintType.equals("U"))sbIx2Cnts.append(DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                       sbIxCnts.append(cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       if (constraintType.equals("U"))sbIx2Cnts.append(cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                } else {
-                                       sbIxCnts.append(", " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
-                                       if (constraintType.equals("U"))sbIx2Cnts.append(", " + DB_SQL_QUOTED_S[cp.dbType]+ colName + DB_SQL_QUOTED_E[cp.dbType]);
+                                       sbIxCnts.append(", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       if (constraintType.equals("U"))sbIx2Cnts.append(", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ colName + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                }
                                sbIxCnts.append(")" + cp.SQL_TERMINATOR[cp.dbType]);
-                               sbIxCnts.append(lineSeparator);
+                               sbIxCnts.append(cp.lineSeparator);
                                if (constraintType.equals("U"))sbIx2Cnts.append(")" + cp.SQL_TERMINATOR[cp.dbType]);
-                               sbIx2Cnts.append(lineSeparator);
-                               sbIx3Cnts.append(lineSeparator);
+                               sbIx2Cnts.append(cp.lineSeparator);
+                               sbIx3Cnts.append(cp.lineSeparator);
 
                                //Write Buffer
                                if (constraintType.equals("P")){
-                                       strSplit[1] = CmnUtils.split(sbIxCnts.toString(), lineSeparator);
-                                       for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[0].println(strSplit[1][i]);
-                                       strSplit[2] = CmnUtils.split(sbIx2Cnts.toString(), lineSeparator);
-                                       for(int i=0;i<strSplit[2].length;i++)if(!strSplit[2][i].trim().equals(""))pw[3].println(strSplit[2][i]);
+                                       strSplit[IDX_CONTENTS_1] = CmnUtils.split(sbIxCnts.toString(), cp.lineSeparator);
+                                       for(int i=0;i<strSplit[IDX_CONTENTS_1].length;i++)if(!strSplit[IDX_CONTENTS_1][i].trim().equals(""))pw[W_CREATE_PKEY].println(strSplit[IDX_CONTENTS_1][i]);
+                                       strSplit[IDX_CONTENTS_2] = CmnUtils.split(sbIx2Cnts.toString(), cp.lineSeparator);
+                                       for(int i=0;i<strSplit[IDX_CONTENTS_2].length;i++)if(!strSplit[IDX_CONTENTS_2][i].trim().equals(""))pw[W_DROP_PKEY].println(strSplit[IDX_CONTENTS_2][i]);
                                } else if (constraintType.equals("U")){
-                                       strSplit[1] = CmnUtils.split(sbIxCnts.toString(), lineSeparator);
-                                       for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[1].println(strSplit[1][i]);
-                                       strSplit[2] = CmnUtils.split(sbIx2Cnts.toString(), lineSeparator);
-                                       for(int i=0;i<strSplit[2].length;i++)if(!strSplit[2][i].trim().equals(""))pw[4].println(strSplit[2][i]);
-                               } else if (constraintType.equals("")){
-                                       strSplit[1] = CmnUtils.split(sbIxCnts.toString(), lineSeparator);
-                                       for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[2].println(strSplit[1][i]);
+                                       strSplit[IDX_CONTENTS_1] = CmnUtils.split(sbIxCnts.toString(), cp.lineSeparator);
+                                       for(int i=0;i<strSplit[IDX_CONTENTS_1].length;i++)if(!strSplit[IDX_CONTENTS_1][i].trim().equals(""))pw[W_CREATE_UKEY].println(strSplit[IDX_CONTENTS_1][i]);
+                                       strSplit[IDX_CONTENTS_2] = CmnUtils.split(sbIx2Cnts.toString(), cp.lineSeparator);
+                                       for(int i=0;i<strSplit[IDX_CONTENTS_2].length;i++)if(!strSplit[IDX_CONTENTS_2][i].trim().equals(""))pw[W_DROP_UKEY].println(strSplit[IDX_CONTENTS_2][i]);
+                               } else {
+                                       strSplit[IDX_CONTENTS_1] = CmnUtils.split(sbIxCnts.toString(), cp.lineSeparator);
+                                       for(int i=0;i<strSplit[IDX_CONTENTS_1].length;i++)if(!strSplit[IDX_CONTENTS_1][i].trim().equals(""))pw[W_CREATE_INDEX].println(strSplit[IDX_CONTENTS_1][i]);
                                }
-                               strSplit[3] = CmnUtils.split(sbIx3Cnts.toString(), lineSeparator);
-                               for(int i=0;i<strSplit[3].length;i++)if(!strSplit[3][i].trim().equals(""))pw[5].println(strSplit[3][i]);
+                               strSplit[IDX_CONTENTS_3] = CmnUtils.split(sbIx3Cnts.toString(), cp.lineSeparator);
+                               for(int i=0;i<strSplit[IDX_CONTENTS_3].length;i++)if(!strSplit[IDX_CONTENTS_3][i].trim().equals(""))pw[W_DROP_INDEX].println(strSplit[IDX_CONTENTS_3][i]);
                        }
 
                        //Close Buffer
-                       for(int i=0;i<6;i++)pw[i].close();
-                       for(int i=0;i<6;i++)pw[i]=null;
-                       br[0].close();
-                       br[0] = null;
+                       for(int i=0;i<pw.length;i++){
+                               if(pw[i]!=null){
+                                       pw[i].close();
+                                       pw[i]=null;
+                               }
+                       }
+                       br[WK_FILE].close();
+                       br[WK_FILE] = null;
                        // Index Contents end
 
                        // View Contents start
-                       br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_VIEW] + "_" + database + "." + cp.fileExtension));
+                       br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_VIEW] + "_" + database + "." + cp.fileExtension));
                        subFolder = new File(folder + "/VIEWS");
                        subFolder.mkdir();
-                       pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_VIEW]))));
-                       pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_VIEW]))));
-                       while((strLine=br[0].readLine()) != null){
-                               strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
-                               CmnUtils.debugPrint("'" + strSplit[0][0] + "'");
-                               pw[1].println(cp.SQL_PREFIX[cp.dbType] + "VIEWS/" + strSplit[0][0] + ".sql");
-                               pw[2].println("DROP VIEW " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                               if (strSplit[0].length>1)CmnUtils.debugPrint("'" + strSplit[0][1] + "'");
-                               pw[0] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + strSplit[0][0] + ".sql"))));
+                       pw[CREATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_VIEW]))));
+                       pw[DROP] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_VIEW]))));
+                       while((strLine=br[WK_FILE].readLine()) != null){
+                               strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
+                               CmnUtils.debugPrint("'" + strSplit[LINE][COL01] + "'");
+                               pw[CREATE].println(cp.SQL_PREFIX[cp.dbType] + "VIEWS/" + strSplit[LINE][COL01] + ".sql");
+                               pw[DROP].print("DROP VIEW " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                               if (strSplit[LINE].length>1)CmnUtils.debugPrint("'" + strSplit[LINE][COL02] + "'");
+                               pw[CONTENTS] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + strSplit[LINE][COL01] + ".sql"))));
                                
-                               stmt = dao.prepareSql(sql_view_column_and_comment[cp.dbType]);
-                               stmt.setString(1,strSplit[0][0]);
+                               stmt = dao.prepareSql(cp.sql_view_column_and_comment[cp.dbType]);
+                               stmt.setString(1,strSplit[LINE][COL01]);
                                dao.executeSql();
                                alData = dao.getArrayList();
                                columnCount = dao.getColumnCount();
-                               if (cp.dbType == cp.DB_TYPE_ORACLE){
-                                       pw[0].println("/* " + strSplit[0][0] + " */");
-                                       pw[0].println("CREATE OR REPLACE VIEW " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][0] + DB_SQL_QUOTED_E[cp.dbType]);
-                                       pw[0].println("(");
+                               if (cp.dbType == cp.DB_TYPE_ORACLE || cp.dbType == cp.DB_TYPE_MYSQL){
+                                       pw[CONTENTS].println("/* " + strSplit[LINE][COL01] + " */");
+                                       if (cp.dbType == cp.DB_TYPE_ORACLE){
+                                               pw[CONTENTS].println("CREATE OR REPLACE VIEW " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       } else {
+                                               pw[CONTENTS].println("CREATE VIEW " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       }
+                                       pw[CONTENTS].println("(");
                                        for(int i=0;i<alData.size();i++){
                                                if ((i+1) % columnCount == 1){
                                                        if (i == 0){
                                                                if (!alData.get(i+1).trim().equals("")){
-                                                                       pw[0].println("    " + DB_SQL_QUOTED_S[cp.dbType]+ alData.get(i) + DB_SQL_QUOTED_E[cp.dbType]+ "    -- " + alData.get(i+1));
+                                                                       pw[CONTENTS].println("    " + cp.DB_SQL_QUOTEDS[cp.dbType]+ alData.get(i) + cp.DB_SQL_QUOTEDE[cp.dbType]+ "    -- " + alData.get(i+1));
                                                                } else {
-                                                                       pw[0].println("    " + DB_SQL_QUOTED_S[cp.dbType]+ alData.get(i) + DB_SQL_QUOTED_E[cp.dbType]);
+                                                                       pw[CONTENTS].println("    " + cp.DB_SQL_QUOTEDS[cp.dbType]+ alData.get(i) + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                                }
                                                        } else {
                                                                if (!alData.get(i+1).trim().equals("")){
-                                                                       pw[0].println("    ," + DB_SQL_QUOTED_S[cp.dbType]+ alData.get(i) + DB_SQL_QUOTED_E[cp.dbType]+ "    -- " + alData.get(i+1));
+                                                                       pw[CONTENTS].println("    ," + cp.DB_SQL_QUOTEDS[cp.dbType]+ alData.get(i) + cp.DB_SQL_QUOTEDE[cp.dbType]+ "    -- " + alData.get(i+1));
                                                                } else {
-                                                                       pw[0].println("    ," + DB_SQL_QUOTED_S[cp.dbType]+ alData.get(i) + DB_SQL_QUOTED_E[cp.dbType]);
+                                                                       pw[CONTENTS].println("    ," + cp.DB_SQL_QUOTEDS[cp.dbType]+ alData.get(i) + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                                }
                                                        }
                                                }
                                        }
-                                       pw[0].println(")");
-                                       pw[0].println("AS");
+                                       pw[CONTENTS].println(")");
+                                       pw[CONTENTS].println("AS");
                                }
-                               stmt = dao.prepareSql(sql_view_text[cp.dbType]);
-                               stmt.setString(1,strSplit[0][0]);
+                               stmt = dao.prepareSql(cp.sql_view_text[cp.dbType]);
+                               stmt.setString(1,strSplit[LINE][COL01]);
                                dao.executeSql();
                                alData2 = dao.getArrayList();
                                strContents = alData2.get(0).trim();
-                               strSplit[1] = CmnUtils.split(strContents, lineSeparator);
-                               for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[0].println(strSplit[1][i].replaceAll("\"\"","\"").replaceAll(Pattern.quote(cp.user.toUpperCase() + "."),"").replaceAll(Pattern.quote(cp.user.toLowerCase() + "."),""));
-                               pw[0].println(cp.SQL_TERMINATOR[cp.dbType]);
+                               strSplit[1] = CmnUtils.split(strContents, cp.lineSeparator);
+                               for(int i=0;i<strSplit[1].length;i++)if(!strSplit[1][i].trim().equals(""))pw[CONTENTS].println(strSplit[1][i].replaceAll("\"\"","\"").replaceAll(Pattern.quote(cp.user.toUpperCase() + "."),"").replaceAll(Pattern.quote(cp.user.toLowerCase() + "."),""));
+                               pw[CONTENTS].print(cp.SQL_TERMINATOR[cp.dbType]);
 
-                               if (!strSplit[0][1].trim().equals(""))pw[0].println(commentOnTable(cp, strSplit[0][0], strSplit[0][1], TYPE_VIEW));
+                               if (!strSplit[LINE][COL02].trim().equals(""))pw[CONTENTS].print(commentOnTable(cp, strSplit[LINE][COL01], strSplit[LINE][COL02], cp.TYPE_VIEW));
                                for(int i=0;i<alData.size();i++){
                                        if ((i+1) % columnCount == 0){
-                                               if (!alData.get(i).trim().equals(""))pw[0].println(commentOnColumn(cp, strSplit[0][0], alData.get(i-1), alData.get(i), TYPE_VIEW));
+                                               if (!alData.get(i).trim().equals(""))pw[CONTENTS].print(commentOnColumn(cp, strSplit[LINE][COL01], alData.get(i-1), alData.get(i), cp.TYPE_VIEW));
                                        }
                                }
-                               pw[0].close();
-                               pw[0] = null;
-                               CmnUtils.infoPrint(String.format("%1$-30s",strSplit[0][0]) + " \83\81\83^\83f\81[\83^\82ª\83A\83\93\83\8d\81[\83h\82³\82ê\82Ãœ\82µ\82½\81B");
+                               pw[CONTENTS].close();
+                               pw[CONTENTS] = null;
+                               CmnUtils.infoPrint(String.format("%1$-30s",strSplit[LINE][COL01]) + " \83\81\83^\83f\81[\83^\82ª\83A\83\93\83\8d\81[\83h\82³\82ê\82Ãœ\82µ\82½\81B");
+                       }
+                       for(int i=0;i<pw.length;i++){
+                               if(pw[i]!=null){
+                                       pw[i].close();
+                                       pw[i]=null;
+                               }
                        }
-                       for(int i=1;i<3;i++)pw[i].close();
-                       for(int i=1;i<3;i++)pw[i]=null;
-                       br[0].close();
-                       br[0] = null;
+                       br[WK_FILE].close();
+                       br[WK_FILE] = null;
                        // View Contents end
 
                        // Procedure Contents start
-                       br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_PROCEDURE] + "_" + database + "." + cp.fileExtension));
+                       br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_PROCEDURE] + "_" + database + "." + cp.fileExtension));
                        subFolder = new File(folder + "/PROCEDURES");
                        subFolder.mkdir();
-                       pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PROCEDURE]))));
-                       pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_PROCEDURE]))));
-                       while((strLine=br[0].readLine()) != null){
-                               strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
-                               CmnUtils.debugPrint("'" + strSplit[0][0] + "'");
-                               pw[1].println(cp.SQL_PREFIX[cp.dbType] + "PROCEDURES/" + strSplit[0][0] + ".sql");
-                               pw[2].println("DROP " + strSplit[0][1] + " " + strSplit[0][0] + cp.SQL_TERMINATOR[cp.dbType]);
-                               if (strSplit[0].length>1)CmnUtils.debugPrint("'" + strSplit[0][1] + "'");
-                               pw[0] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + strSplit[0][0] + ".sql"))));
+                       pw[CREATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PROCEDURE]))));
+                       pw[DROP] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_PROCEDURE]))));
+                       while((strLine=br[WK_FILE].readLine()) != null){
+                               strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
+                               CmnUtils.debugPrint("'" + strSplit[LINE][COL01] + "'");
+                               pw[CREATE].println(cp.SQL_PREFIX[cp.dbType] + "PROCEDURES/" + strSplit[LINE][COL01] + ".sql");
+                               pw[DROP].print("DROP " + strSplit[LINE][COL02] + " " + cp.DB_SQL_QUOTEDS[cp.dbType] + strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType] + cp.SQL_TERMINATOR[cp.dbType]);
+                               if (strSplit[LINE].length>1)CmnUtils.debugPrint("'" + strSplit[LINE][COL02] + "'");
+                               pw[CONTENTS] = new PrintWriter(new BufferedWriter(new FileWriter(new File(subFolder + "/" + strSplit[LINE][COL01] + ".sql"))));
                                if (cp.dbType == cp.DB_TYPE_ORACLE){
-                                       pw[0].println("/* " + strSplit[0][0] + " */");
-                                       pw[0].print("CREATE OR REPLACE ");
+                                       pw[CONTENTS].println("/* " + strSplit[LINE][COL01] + " */");
+                                       pw[CONTENTS].print("CREATE OR REPLACE ");
+                               }
+                               if (cp.dbType == cp.DB_TYPE_MYSQL){
+                                       if(strSplit[LINE][COL02].equals("TRIGGER")){
+                                               stmt = dao.prepareSql("show create trigger " + cp.DB_SQL_QUOTEDS[cp.dbType] + strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       } else if (strSplit[LINE][COL02].equals("PROCEDURE")){
+                                               stmt = dao.prepareSql("show create procedure " + cp.DB_SQL_QUOTEDS[cp.dbType] + strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       } else if (strSplit[LINE][COL02].equals("FUNCTION")){
+                                               stmt = dao.prepareSql("show create function " + cp.DB_SQL_QUOTEDS[cp.dbType] + strSplit[LINE][COL01] + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       }
+                               } else {
+                                       stmt = dao.prepareSql(cp.sql_proc[cp.dbType]);
+                                       stmt.setString(1,strSplit[LINE][COL02]);
+                                       stmt.setString(2,strSplit[LINE][COL01]);
                                }
-                               stmt = dao.prepareSql(sql_proc[cp.dbType]);
-                               stmt.setString(1,strSplit[0][1]);
-                               stmt.setString(2,strSplit[0][0]);
                                dao.executeSql();
                                alData = dao.getArrayList();
+                               boolean mysql_s_flag = false;
+                               boolean mysql_e_flag = false;
                                for(int i=0;i<alData.size();i++){
                                        strContents = alData.get(i);
-                                       if(!strContents.equals(""))pw[0].println(strContents.replaceAll("\"\"","\"").replaceAll(Pattern.quote(cp.user.toUpperCase() + "."),"").replaceAll(Pattern.quote(cp.user.toLowerCase() + "."),""));
+                                       if (cp.dbType == cp.DB_TYPE_MYSQL){
+                                               if(!mysql_s_flag){
+                                                       String [] spcDiv = CmnUtils.split(strContents," ");
+                                                       if(spcDiv.length >0 && spcDiv[0].toUpperCase().equals("CREATE")){
+                                                               mysql_s_flag = true;
+                                                               for(int j=0;j<spcDiv.length;j++){
+                                                                       if(j==0){
+                                                                               pw[CONTENTS].print(spcDiv[j]);
+                                                                       } else if(j!=1) {
+                                                                               pw[CONTENTS].print(" " + spcDiv[j]);
+                                                                       }
+                                                               }
+                                                       }
+                                               } else if(mysql_s_flag && !mysql_e_flag){
+                                                       String [] spcDiv = CmnUtils.split(strContents," ");
+                                                       if(spcDiv.length >0 && CmnUtils.isCharacterSet(spcDiv[0])){
+                                                               mysql_e_flag = true;
+                                                               pw[CONTENTS].println("");
+                                                       } else {
+                                                               for(int j=0;j<spcDiv.length;j++){
+                                                                       if(j==0){
+                                                                               pw[CONTENTS].print(spcDiv[j]);
+                                                                       } else {
+                                                                               pw[CONTENTS].print(" " + spcDiv[j]);
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       } else {
+                                               if(!strContents.equals(""))pw[CONTENTS].println(strContents.replaceAll("\"\"","\"").replaceAll(Pattern.quote(cp.user.toUpperCase() + "."),"").replaceAll(Pattern.quote(cp.user.toLowerCase() + "."),""));
+                                       }
                                }
                                
                                if (cp.dbType == cp.DB_TYPE_SQLSERVER){
-                                       pw[0].println(cp.SQL_TERMINATOR[cp.dbType]);
-                                       //pw[0].println("/");
+                                       pw[CONTENTS].print(cp.SQL_TERMINATOR[cp.dbType]);
+                               }
+                               pw[CONTENTS].close();
+                               pw[CONTENTS] = null;
+                               CmnUtils.infoPrint(String.format("%1$-30s",strSplit[LINE][COL01]) + " \83\81\83^\83f\81[\83^\82ª\83A\83\93\83\8d\81[\83h\82³\82ê\82Ãœ\82µ\82½\81B");
+                       }
+                       for(int i=0;i<pw.length;i++){
+                               if(pw[i]!=null){
+                                       pw[i].close();
+                                       pw[i]=null;
                                }
-                               pw[0].close();
-                               pw[0] = null;
-                               CmnUtils.infoPrint(String.format("%1$-30s",strSplit[0][0]) + " \83\81\83^\83f\81[\83^\82ª\83A\83\93\83\8d\81[\83h\82³\82ê\82Ãœ\82µ\82½\81B");
                        }
-                       for(int i=1;i<3;i++)pw[i].close();
-                       for(int i=1;i<3;i++)pw[i]=null;
-                       br[0].close();
-                       br[0] = null;
+                       br[WK_FILE].close();
+                       br[WK_FILE] = null;
                        // Procedure Contents end
 
                        // Sequence Contents start
-                       br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_SEQ] + "_" + database + "." + cp.fileExtension));
-                       pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_SEQUENCE]))));
-                       pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_SEQUENCE]))));
+                       br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_SEQ] + "_" + database + "." + cp.fileExtension));
+                       pw[CREATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_SEQUENCE]))));
+                       pw[DROP] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_SEQUENCE]))));
 
-                       while((strLine=br[0].readLine()) != null){
-                               strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
-                               seqName = strSplit[0][0];
-                               minVal = strSplit[0][1];
-                               maxVal = strSplit[0][2];
-                               incSz = strSplit[0][3];
-                               cycFg = strSplit[0][4];
-                               odFg = strSplit[0][5];
-                               cacheSz = strSplit[0][6];
+                       while((strLine=br[WK_FILE].readLine()) != null){
+                               strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
+                               seqName = strSplit[LINE][COL01];
+                               minVal = strSplit[LINE][COL02];
+                               maxVal = strSplit[LINE][COL03];
+                               incSz = strSplit[LINE][COL04];
+                               cycFg = strSplit[LINE][COL05];
+                               odFg = strSplit[LINE][COL06];
+                               cacheSz = strSplit[LINE][COL07];
                                if(cacheSz.equals("0"))cacheSz="10";
-                               lstNo = strSplit[0][7];
-                               pw[1].print("CREATE SEQUENCE " + DB_SQL_QUOTED_S[cp.dbType]+ seqName + DB_SQL_QUOTED_E[cp.dbType]+ " MINVALUE " + minVal + " MAXVALUE " + maxVal + " INCREMENT BY " + incSz + " START WITH " + lstNo + " CACHE " + cacheSz);
-                               if (odFg.equals("N")){
-                                       pw[1].print(" NOORDER");
-                               } else {
-                                       pw[1].print(" ORDER");
+                               lstNo = strSplit[LINE][COL08];
+                               pw[CREATE].print("CREATE SEQUENCE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ seqName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " MINVALUE " + minVal + " MAXVALUE " + maxVal + " INCREMENT BY " + incSz + " START WITH " + lstNo);
+                               if (cp.dbType == cp.DB_TYPE_ORACLE){
+                                       pw[CREATE].print(" CACHE " + cacheSz);
+                                       if (odFg.equals("N")){
+                                               pw[CREATE].print(" NOORDER");
+                                       } else {
+                                               pw[CREATE].print(" ORDER");
+                                       }
+                                       if (cycFg.equals("N")){
+                                               pw[CREATE].print(" NOCYCLE");
+                                       } else {
+                                               pw[CREATE].print(" CYCLE");
+                                       }
+                               } else if (cp.dbType == cp.DB_TYPE_SQLSERVER){
+                                       if (cacheSz.equals("")){
+                                               pw[CREATE].print(" NO CACHE");
+                                       } else {
+                                               pw[CREATE].print(" CACHE " + cacheSz);
+                                       }
+                                       if (cycFg.equals("N")){
+                                               pw[CREATE].print(" NO CYCLE");
+                                       } else {
+                                               pw[CREATE].print(" CYCLE");
+                                       }
                                }
-                               if (cycFg.equals("N")){
-                                       pw[1].print(" NOCYCLE");
-                               } else {
-                                       pw[1].print(" CYCLE");
+                               pw[CREATE].print(cp.SQL_TERMINATOR[cp.dbType]);
+                               pw[DROP].print("DROP SEQUENCE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ seqName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                               for(int i=0;i<strSplit[LINE].length;i++)CmnUtils.debugPrint("'" + strSplit[LINE][i] + "'");
+                       }
+                       for(int i=0;i<pw.length;i++){
+                               if(pw[i]!=null){
+                                       pw[i].close();
+                                       pw[i]=null;
                                }
-                               pw[1].println(cp.SQL_TERMINATOR[cp.dbType]);
-                               pw[2].println("DROP SEQUENCE " + DB_SQL_QUOTED_S[cp.dbType]+ seqName + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                               for(int i=0;i<strSplit[0].length;i++)CmnUtils.debugPrint("'" + strSplit[0][i] + "'");
                        }
-                       for(int i=1;i<3;i++)pw[i].close();
-                       for(int i=1;i<3;i++)pw[i]=null;
-                       br[0].close();
-                       br[0] = null;
+                       br[WK_FILE].close();
+                       br[WK_FILE] = null;
                        // Sequence Contents end
 
                        // Synonym Contents start
-                       br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_SYNONYM] + "_" + database + "." + cp.fileExtension));
-                       pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_SYNONYM]))));
-                       pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_SYNONYM]))));
+                       br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_SYNONYM] + "_" + database + "." + cp.fileExtension));
+                       pw[CREATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_SYNONYM]))));
+                       pw[DROP] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_SYNONYM]))));
 
-                       while((strLine=br[0].readLine()) != null){
-                               strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
-                               synmName = strSplit[0][0];
-                               tbOwner = strSplit[0][1];
-                               tbName = strSplit[0][2];
-                               dbLnk = strSplit[0][3];
+                       while((strLine=br[WK_FILE].readLine()) != null){
+                               strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
+                               synmName = strSplit[LINE][COL01];
+                               tbOwner = strSplit[LINE][COL02];
+                               tbName = strSplit[LINE][COL03];
+                               dbLnk = strSplit[LINE][COL04];
                                
-                               pw[1].print("CREATE SYNONYM " + DB_SQL_QUOTED_S[cp.dbType]+ synmName + DB_SQL_QUOTED_E[cp.dbType]+ " FOR ");
-                               if(dbLnk.equals("")){
-                                       pw[1].print(DB_SQL_QUOTED_S[cp.dbType]+ tbOwner + DB_SQL_QUOTED_E[cp.dbType]+ "." + DB_SQL_QUOTED_S[cp.dbType]+ tbName + DB_SQL_QUOTED_E[cp.dbType]);
-                               } else {
-                                       pw[1].print(DB_SQL_QUOTED_S[cp.dbType]+ tbName + DB_SQL_QUOTED_E[cp.dbType]+ "@" + DB_SQL_QUOTED_S[cp.dbType]+ dbLnk + DB_SQL_QUOTED_S[cp.dbType]);
+                               pw[CREATE].print("CREATE SYNONYM " + cp.DB_SQL_QUOTEDS[cp.dbType]+ synmName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " FOR ");
+                               if(cp.dbType == cp.DB_TYPE_ORACLE){
+                                       if(!dbLnk.equals("")){
+                                               pw[CREATE].print(cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ "@" + cp.DB_SQL_QUOTEDS[cp.dbType]+ dbLnk + cp.DB_SQL_QUOTEDS[cp.dbType]);
+                                       } else {
+                                               pw[CREATE].print(cp.DB_SQL_QUOTEDS[cp.dbType]+ tbOwner + cp.DB_SQL_QUOTEDE[cp.dbType]+ "." + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]);
+                                       }
+                               } else if(cp.dbType == cp.DB_TYPE_SQLSERVER){
+                                       pw[CREATE].print(tbName);
+                               }
+                               pw[CREATE].print(cp.SQL_TERMINATOR[cp.dbType]);
+                               pw[DROP].print("DROP SYNONYM " + cp.DB_SQL_QUOTEDS[cp.dbType]+ synmName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                               for(int i=0;i<strSplit[LINE].length;i++)CmnUtils.debugPrint("'" + strSplit[LINE][i] + "'");
+                       }
+                       for(int i=0;i<pw.length;i++){
+                               if(pw[i]!=null){
+                                       pw[i].close();
+                                       pw[i]=null;
                                }
-                               pw[1].println(cp.SQL_TERMINATOR[cp.dbType]);
-                               pw[2].println("DROP SYNONYM " + DB_SQL_QUOTED_S[cp.dbType]+ synmName + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                               for(int i=0;i<strSplit[0].length;i++)CmnUtils.debugPrint("'" + strSplit[0][i] + "'");
                        }
-                       for(int i=1;i<3;i++)pw[i].close();
-                       for(int i=1;i<3;i++)pw[i]=null;
-                       br[0].close();
-                       br[0] = null;
+                       br[WK_FILE].close();
+                       br[WK_FILE] = null;
                        // Synonym Contents end
 
                        // Fk Contents start
-                       File tsvFile = new File(folder + "/" + FILE_NAME[TYPE_FK] + "_" + database + "." + cp.fileExtension);
+                       File tsvFile = new File(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_FK] + "_" + database + "." + cp.fileExtension);
                        if (tsvFile.length() > 0) {
-                               br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_FK] + "_" + database + "." + cp.fileExtension));
-                               pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_FK]))));
-                               pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_FK]))));
+                               br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_FK] + "_" + database + "." + cp.fileExtension));
+                               pw[CREATE] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_FK]))));
+                               pw[DROP] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.DROP_FK]))));
                                tbName = "";
                                fkName = "";
                                fkCol = "";
                                fkColPos = "";
                                rtbName = "";
-                               rfkName = "";
                                rfkCol = "";
                                rfkColPos = "";
                                
-                               while((strLine=br[0].readLine()) != null){
-                                       strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
-                                       if(!fkName.equals(strSplit[0][1]) && !fkName.equals("")){
-                                               pw[1].println("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tbName + DB_SQL_QUOTED_E[cp.dbType]+ " ADD CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ fkName + DB_SQL_QUOTED_E[cp.dbType]+ " FOREIGN KEY (" + DB_SQL_QUOTED_S[cp.dbType]+ fkCol + DB_SQL_QUOTED_E[cp.dbType]+ ") REFERENCES " + DB_SQL_QUOTED_S[cp.dbType]+ rtbName + DB_SQL_QUOTED_E[cp.dbType]+ " (" + DB_SQL_QUOTED_S[cp.dbType]+ rfkCol + DB_SQL_QUOTED_E[cp.dbType]+ ")" + cp.SQL_TERMINATOR[cp.dbType]);
-                                               pw[2].println("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tbName + DB_SQL_QUOTED_E[cp.dbType]+ " DROP CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ fkName + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                                               for(int i=0;i<strSplit[0].length;i++)CmnUtils.debugPrint("'" + strSplit[0][i] + "'");
-                                               tbName = strSplit[0][0];
-                                               fkName = strSplit[0][1];
-                                               fkCol = strSplit[0][2];
-                                               fkColPos = strSplit[0][3];
-                                               rtbName = strSplit[0][4];
-                                               rfkName = strSplit[0][5];
-                                               rfkCol = strSplit[0][6];
-                                               rfkColPos = strSplit[0][7];
+                               while((strLine=br[WK_FILE].readLine()) != null){
+                                       strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
+                                       if(!fkName.equals(strSplit[LINE][COL02]) && !fkName.equals("")){
+                                               pw[CREATE].print("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " FOREIGN KEY (" + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkCol + cp.DB_SQL_QUOTEDE[cp.dbType]+ ") REFERENCES " + cp.DB_SQL_QUOTEDS[cp.dbType]+ rtbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " (" + cp.DB_SQL_QUOTEDS[cp.dbType]+ rfkCol + cp.DB_SQL_QUOTEDE[cp.dbType]+ ")" + cp.SQL_TERMINATOR[cp.dbType]);
+                                               if(cp.dbType == cp.DB_TYPE_MYSQL){
+                                                       pw[DROP].print("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP FOREIGN KEY " + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                               } else {
+                                                       pw[DROP].print("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                                               }
+                                               for(int i=0;i<strSplit[LINE].length;i++)CmnUtils.debugPrint("'" + strSplit[LINE][i] + "'");
+                                               tbName = strSplit[LINE][COL01];
+                                               fkName = strSplit[LINE][COL02];
+                                               fkCol = strSplit[LINE][COL03];
+                                               fkColPos = strSplit[LINE][COL04];
+                                               rtbName = strSplit[LINE][COL05];
+                                               rfkCol = strSplit[LINE][COL06];
+                                               rfkColPos = strSplit[LINE][COL07];
                                        } else {
                                                if(fkName.equals("")){
-                                                       tbName = strSplit[0][0];
-                                                       fkName = strSplit[0][1];
-                                                       fkCol = strSplit[0][2];
-                                                       fkColPos = strSplit[0][3];
-                                                       rtbName = strSplit[0][4];
-                                                       rfkName = strSplit[0][5];
-                                                       rfkCol = strSplit[0][6];
-                                                       rfkColPos = strSplit[0][7];
+                                                       tbName = strSplit[LINE][COL01];
+                                                       fkName = strSplit[LINE][COL02];
+                                                       fkCol = strSplit[LINE][COL03];
+                                                       fkColPos = strSplit[LINE][COL04];
+                                                       rtbName = strSplit[LINE][COL05];
+                                                       rfkCol = strSplit[LINE][COL06];
+                                                       rfkColPos = strSplit[LINE][COL07];
                                                } else {
-                                                       if (strSplit[0][3].equals(strSplit[0][7])) {
-                                                               fkCol = fkCol + DB_SQL_QUOTED_E[cp.dbType]+ ", " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][2];
-                                                               rfkCol = rfkCol + DB_SQL_QUOTED_E[cp.dbType]+ ", " + DB_SQL_QUOTED_S[cp.dbType]+ strSplit[0][6];
+                                                       if (
+                                                               (cp.dbType == cp.DB_TYPE_ORACLE && strSplit[LINE][COL04].equals(strSplit[LINE][COL07])) ||
+                                                                cp.dbType != cp.DB_TYPE_ORACLE
+                                                       ) {
+                                                               fkCol = fkCol + cp.DB_SQL_QUOTEDE[cp.dbType]+ ", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL03];
+                                                               rfkCol = rfkCol + cp.DB_SQL_QUOTEDE[cp.dbType]+ ", " + cp.DB_SQL_QUOTEDS[cp.dbType]+ strSplit[LINE][COL06];
                                                        }
                                                }
                                        }
                                        
                                }
-                               pw[1].println("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tbName + DB_SQL_QUOTED_E[cp.dbType]+ " ADD CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ fkName + DB_SQL_QUOTED_E[cp.dbType]+ " FOREIGN KEY (" + DB_SQL_QUOTED_S[cp.dbType]+ fkCol + DB_SQL_QUOTED_E[cp.dbType]+ ") REFERENCES " + DB_SQL_QUOTED_S[cp.dbType]+ rtbName + DB_SQL_QUOTED_E[cp.dbType]+ " (" + DB_SQL_QUOTED_S[cp.dbType]+ rfkCol + DB_SQL_QUOTED_E[cp.dbType]+ ")" + cp.SQL_TERMINATOR[cp.dbType]);
-                               pw[2].println("ALTER TABLE " + DB_SQL_QUOTED_S[cp.dbType]+ tbName + DB_SQL_QUOTED_E[cp.dbType]+ " DROP CONSTRAINT " + DB_SQL_QUOTED_S[cp.dbType]+ fkName + DB_SQL_QUOTED_E[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
-                               for(int i=1;i<3;i++)pw[i].close();
-                               for(int i=1;i<3;i++)pw[i]=null;
-                               br[0].close();
-                               br[0] = null;
+                               pw[CREATE].print("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " ADD CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " FOREIGN KEY (" + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkCol + cp.DB_SQL_QUOTEDE[cp.dbType]+ ") REFERENCES " + cp.DB_SQL_QUOTEDS[cp.dbType]+ rtbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " (" + cp.DB_SQL_QUOTEDS[cp.dbType]+ rfkCol + cp.DB_SQL_QUOTEDE[cp.dbType]+ ")" + cp.SQL_TERMINATOR[cp.dbType]);
+                               if(cp.dbType == cp.DB_TYPE_MYSQL){
+                                       pw[DROP].print("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP FOREIGN KEY " + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                               } else {
+                                       pw[DROP].print("ALTER TABLE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tbName + cp.DB_SQL_QUOTEDE[cp.dbType]+ " DROP CONSTRAINT " + cp.DB_SQL_QUOTEDS[cp.dbType]+ fkName + cp.DB_SQL_QUOTEDE[cp.dbType]+ cp.SQL_TERMINATOR[cp.dbType]);
+                               }
+                                       for(int i=0;i<pw.length;i++){
+                                       if(pw[i]!=null){
+                                               pw[i].close();
+                                               pw[i]=null;
+                                       }
+                               }
+                               br[WK_FILE].close();
+                               br[WK_FILE] = null;
                        }
                        // Fk Contents end
 
                        // Rhysical Contents start
-                       if(cp.isPhysical){
+                       if(cp.isPhysical && cp.dbType == cp.DB_TYPE_ORACLE){
                                // physical index setting
-                               br[0] = new BufferedReader(new FileReader(folder + "/" + FILE_NAME[TYPE_OBJ] + "_" + database + "." + cp.fileExtension));
-                               br[1] = new BufferedReader(new FileReader(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY]));
-                               br[2] = new BufferedReader(new FileReader(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY]));
-                               br[3] = new BufferedReader(new FileReader(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX]));
-                               pw[1] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY] + "." + phyfileExtension))));
-                               pw[2] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY] + "." + phyfileExtension))));
-                               pw[3] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX] + "." + phyfileExtension))));
+                               br[WK_FILE] = new BufferedReader(new FileReader(folder + "/" + cp.WK_FILE_NAME[cp.TYPE_OBJ] + "_" + database + "." + cp.fileExtension));
+                               br[R_CREATE_PKEY] = new BufferedReader(new FileReader(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY]));
+                               br[R_CREATE_UKEY] = new BufferedReader(new FileReader(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY]));
+                               br[R_CREATE_INDEX] = new BufferedReader(new FileReader(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX]));
+                               pw[W_CREATE_PKEY] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY] + "." + phyfileExtension))));
+                               pw[W_CREATE_UKEY] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY] + "." + phyfileExtension))));
+                               pw[W_CREATE_INDEX] = new PrintWriter(new BufferedWriter(new FileWriter(new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX] + "." + phyfileExtension))));
                                alData = new ArrayList<String>();
                                int rowNo;
                                String [] rowData;
-                               while((strLine=br[0].readLine()) != null){
-                                       strSplit[0] = CmnUtils.split(strLine, cp.delimiter);
-                                       for(int i=0;i<strSplit[0].length;i++)alData.add(strSplit[0][i]);
+                               while((strLine=br[WK_FILE].readLine()) != null){
+                                       strSplit[LINE] = CmnUtils.split(strLine, cp.delimiter);
+                                       for(int i=0;i<strSplit[LINE].length;i++)alData.add(strSplit[LINE][i]);
                                }
-                               while((strLine=br[1].readLine()) != null){
-                                       strSplit[0] = CmnUtils.splitSpace(strLine);
-                                       rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, strSplit[0][5].replaceAll("\"",""));
+                               while((strLine=br[R_CREATE_PKEY].readLine()) != null){
+                                       strSplit[LINE] = CmnUtils.splitSpace(strLine);
+                                       rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, strSplit[LINE][COL06].replaceAll("\"",""));
                                        if (rowNo != -1){
-                                               rowData = rowData = CmnUtils.getArrayRowData(alData, 12, rowNo);
-                                               CmnUtils.debugPrint(strSplit[0][5] + ":" + rowNo);
+                                               rowData = CmnUtils.getArrayRowData(alData, 12, rowNo);
+                                               CmnUtils.debugPrint(strSplit[LINE][COL06] + ":" + rowNo);
                                                for(int i=0;i<rowData.length;i++)CmnUtils.debugPrint(rowData[i]);
-                                               tbName = rowData[0];
-                                               objName = rowData[1];
-                                               objTyp = rowData[2];
-                                               pctFree = rowData[3];
-                                               pctUsed = rowData[4];
-                                               iniTrns = rowData[5];
-                                               freeLst = rowData[6];
-                                               flstGrp = rowData[7];
-                                               bufPool = rowData[8];
-                                               tblSpace = rowData[9];
-                                               logging = rowData[10];
-                                               segByts = rowData[11];
-                                               pw[1].print(strLine.replace(';',' '));
-                                               pw[1].print("USING INDEX PCTFREE " + pctFree);
-                                               pw[1].print(" INITRANS " + iniTrns + " STORAGE(");
-                                               if(!freeLst.equals(""))pw[1].print(" FREELISTS " + freeLst);
-                                               if(!flstGrp.equals(""))pw[1].print(" FREELIST GROUPS " + flstGrp);
-                                               pw[1].print(" BUFFER_POOL " + bufPool + ")");
-                                               pw[1].print(" TABLESPACE " + DB_SQL_QUOTED_S[cp.dbType]+ tblSpace + DB_SQL_QUOTED_E[cp.dbType]);
+                                               tbName = rowData[COL01];
+                                               objName = rowData[COL02];
+                                               objTyp = rowData[COL03];
+                                               pctFree = rowData[COL04];
+                                               pctUsed = rowData[COL05];
+                                               iniTrns = rowData[COL06];
+                                               freeLst = rowData[COL07];
+                                               flstGrp = rowData[COL08];
+                                               bufPool = rowData[COL09];
+                                               tblSpace = rowData[COL10];
+                                               logging = rowData[COL11];
+                                               segByts = rowData[COL12];
+                                               pw[W_CREATE_PKEY].print(strLine.replace(';',' '));
+                                               pw[W_CREATE_PKEY].print("USING INDEX PCTFREE " + pctFree);
+                                               pw[W_CREATE_PKEY].print(" INITRANS " + iniTrns + " STORAGE(");
+                                               if(!freeLst.equals(""))pw[W_CREATE_PKEY].print(" FREELISTS " + freeLst);
+                                               if(!flstGrp.equals(""))pw[W_CREATE_PKEY].print(" FREELIST GROUPS " + flstGrp);
+                                               pw[W_CREATE_PKEY].print(" BUFFER_POOL " + bufPool + ")");
+                                               pw[W_CREATE_PKEY].print(" TABLESPACE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tblSpace + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                if(logging.equals("NO")){
-                                                       pw[1].println(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[W_CREATE_PKEY].print(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
                                                } else {
-                                                       pw[1].println(cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[W_CREATE_PKEY].print(cp.SQL_TERMINATOR[cp.dbType]);
                                                }
                                        } else {
-                                               pw[1].println(strLine);
-                                               CmnUtils.errorPrint(strSplit[0][5] + ",UNUSABLE INDEX");
+                                               pw[W_CREATE_PKEY].println(strLine);
+                                               CmnUtils.errorPrint(strSplit[LINE][COL06] + ",UNUSABLE INDEX");
                                        }
                                }
-                               while((strLine=br[2].readLine()) != null){
-                                       strSplit[0] = CmnUtils.splitSpace(strLine);
-                                       rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, strSplit[0][5].replaceAll("\"",""));
+                               while((strLine=br[R_CREATE_UKEY].readLine()) != null){
+                                       strSplit[LINE] = CmnUtils.splitSpace(strLine);
+                                       rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, strSplit[LINE][COL06].replaceAll("\"",""));
                                        if (rowNo != -1){
                                                rowData = rowData = CmnUtils.getArrayRowData(alData, 12, rowNo);
-                                               CmnUtils.debugPrint(strSplit[0][5] + ":" + rowNo);
+                                               CmnUtils.debugPrint(strSplit[LINE][COL06] + ":" + rowNo);
                                                for(int i=0;i<rowData.length;i++)CmnUtils.debugPrint(rowData[i]);
-                                               tbName = rowData[0];
-                                               objName = rowData[1];
-                                               objTyp = rowData[2];
-                                               pctFree = rowData[3];
-                                               pctUsed = rowData[4];
-                                               iniTrns = rowData[5];
-                                               freeLst = rowData[6];
-                                               flstGrp = rowData[7];
-                                               bufPool = rowData[8];
-                                               tblSpace = rowData[9];
-                                               logging = rowData[10];
-                                               segByts = rowData[11];
-                                               pw[2].print(strLine.replace(';',' '));
-                                               pw[2].print("USING INDEX PCTFREE " + pctFree);
-                                               pw[2].print(" INITRANS " + iniTrns + " STORAGE(");
-                                               if(!freeLst.equals(""))pw[2].print(" FREELISTS " + freeLst);
-                                               if(!flstGrp.equals(""))pw[2].print(" FREELIST GROUPS " + flstGrp);
-                                               pw[2].print(" BUFFER_POOL " + bufPool + ")");
-                                               pw[2].print(" TABLESPACE " + DB_SQL_QUOTED_S[cp.dbType]+ tblSpace + DB_SQL_QUOTED_E[cp.dbType]);
+                                               tbName = rowData[COL01];
+                                               objName = rowData[COL02];
+                                               objTyp = rowData[COL03];
+                                               pctFree = rowData[COL04];
+                                               pctUsed = rowData[COL05];
+                                               iniTrns = rowData[COL06];
+                                               freeLst = rowData[COL07];
+                                               flstGrp = rowData[COL08];
+                                               bufPool = rowData[COL09];
+                                               tblSpace = rowData[COL10];
+                                               logging = rowData[COL11];
+                                               segByts = rowData[COL12];
+                                               pw[W_CREATE_UKEY].print(strLine.replace(';',' '));
+                                               pw[W_CREATE_UKEY].print("USING INDEX PCTFREE " + pctFree);
+                                               pw[W_CREATE_UKEY].print(" INITRANS " + iniTrns + " STORAGE(");
+                                               if(!freeLst.equals(""))pw[W_CREATE_UKEY].print(" FREELISTS " + freeLst);
+                                               if(!flstGrp.equals(""))pw[W_CREATE_UKEY].print(" FREELIST GROUPS " + flstGrp);
+                                               pw[W_CREATE_UKEY].print(" BUFFER_POOL " + bufPool + ")");
+                                               pw[W_CREATE_UKEY].print(" TABLESPACE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tblSpace + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                if(logging.equals("NO")){
-                                                       pw[2].println(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[W_CREATE_UKEY].print(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
                                                } else {
-                                                       pw[2].println(cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[W_CREATE_UKEY].print(cp.SQL_TERMINATOR[cp.dbType]);
                                                }
                                        } else {
-                                               pw[2].println(strLine);
-                                               CmnUtils.errorPrint(strSplit[0][5] + ",UNUSABLE INDEX");
+                                               pw[W_CREATE_UKEY].println(strLine);
+                                               CmnUtils.errorPrint(strSplit[LINE][COL06] + ",UNUSABLE INDEX");
                                        }
                                }
-                               while((strLine=br[3].readLine()) != null){
-                                       strSplit[0] = CmnUtils.splitSpace(strLine);
-                                       rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, strSplit[0][2].replaceAll("\"",""));
+                               while((strLine=br[R_CREATE_INDEX].readLine()) != null){
+                                       strSplit[LINE] = CmnUtils.splitSpace(strLine);
+                                       rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, strSplit[LINE][COL03].replaceAll("\"",""));
                                        CmnUtils.debugPrint("rowNo=" + rowNo);
                                        if (rowNo != -1){
                                                rowData = CmnUtils.getArrayRowData(alData, 12, rowNo);
                                                for(int i=0;i<rowData.length;i++)CmnUtils.debugPrint(rowData[i]);
-                                               tbName = rowData[0];
-                                               objName = rowData[1];
-                                               objTyp = rowData[2];
-                                               pctFree = rowData[3];
-                                               pctUsed = rowData[4];
-                                               iniTrns = rowData[5];
-                                               freeLst = rowData[6];
-                                               flstGrp = rowData[7];
-                                               bufPool = rowData[8];
-                                               tblSpace = rowData[9];
-                                               logging = rowData[10];
-                                               segByts = rowData[11];
-                                               pw[3].print(strLine.replace(';',' '));
-                                               pw[3].print("PCTFREE " + pctFree);
-                                               pw[3].print(" INITRANS " + iniTrns + " STORAGE(");
-                                               if(!freeLst.equals(""))pw[3].print(" FREELISTS " + freeLst);
-                                               if(!flstGrp.equals(""))pw[3].print(" FREELIST GROUPS " + flstGrp);
-                                               pw[3].print(" BUFFER_POOL " + bufPool + ")");
-                                               pw[3].print(" TABLESPACE " + DB_SQL_QUOTED_S[cp.dbType]+ tblSpace + DB_SQL_QUOTED_E[cp.dbType]);
+                                               tbName = rowData[COL01];
+                                               objName = rowData[COL02];
+                                               objTyp = rowData[COL03];
+                                               pctFree = rowData[COL04];
+                                               pctUsed = rowData[COL05];
+                                               iniTrns = rowData[COL06];
+                                               freeLst = rowData[COL07];
+                                               flstGrp = rowData[COL08];
+                                               bufPool = rowData[COL09];
+                                               tblSpace = rowData[COL10];
+                                               logging = rowData[COL11];
+                                               segByts = rowData[COL12];
+                                               pw[W_CREATE_INDEX].print(strLine.replace(';',' '));
+                                               pw[W_CREATE_INDEX].print("PCTFREE " + pctFree);
+                                               pw[W_CREATE_INDEX].print(" INITRANS " + iniTrns + " STORAGE(");
+                                               if(!freeLst.equals(""))pw[W_CREATE_INDEX].print(" FREELISTS " + freeLst);
+                                               if(!flstGrp.equals(""))pw[W_CREATE_INDEX].print(" FREELIST GROUPS " + flstGrp);
+                                               pw[W_CREATE_INDEX].print(" BUFFER_POOL " + bufPool + ")");
+                                               pw[W_CREATE_INDEX].print(" TABLESPACE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tblSpace + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                if(logging.equals("NO")){
-                                                       pw[3].println(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[W_CREATE_INDEX].print(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
                                                } else {
-                                                       pw[3].println(cp.SQL_TERMINATOR[cp.dbType]);
+                                                       pw[W_CREATE_INDEX].print(cp.SQL_TERMINATOR[cp.dbType]);
                                                }
                                        } else {
-                                               pw[3].println(strLine);
-                                               CmnUtils.errorPrint(strSplit[0][2] + ",UNUSABLE INDEX");
+                                               pw[W_CREATE_INDEX].println(strLine);
+                                               CmnUtils.errorPrint(strSplit[LINE][COL03] + ",UNUSABLE INDEX");
+                                       }
+                               }
+                               for(int i=0;i<pw.length;i++){
+                                       if(pw[i]!=null){
+                                               pw[i].close();
+                                               pw[i]=null;
+                                       }
+                               }
+                               for(int i=0;i<br.length;i++){
+                                       if(br[i]!=null){
+                                               br[i].close();
+                                               br[i]=null;
                                        }
                                }
-                               for(int i=1;i<4;i++)pw[i].close();
-                               for(int i=1;i<4;i++)pw[i]=null;
-                               for(int i=0;i<4;i++)br[i].close();
-                               for(int i=0;i<4;i++)br[i]=null;
                                
-                               File [] fmFl = new File[6];
-                               File [] toFl = new File[6];
+                               File [] fmFl = new File[3];
+                               File [] toFl = new File[3];
                                
-                               fmFl[0] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY] + "." + phyfileExtension);
-                               fmFl[1] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY] + "." + phyfileExtension);
-                               fmFl[2] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX] + "." + phyfileExtension);
-                               toFl[0] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY]);
-                               toFl[1] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY]);
-                               toFl[2] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX]);
-                               for(int i=0;i<3;i++){
+                               fmFl[W_CREATE_PKEY] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY] + "." + phyfileExtension);
+                               fmFl[W_CREATE_UKEY] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY] + "." + phyfileExtension);
+                               fmFl[W_CREATE_INDEX] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX] + "." + phyfileExtension);
+                               toFl[W_CREATE_PKEY] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_PKEY]);
+                               toFl[W_CREATE_UKEY] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_UKEY]);
+                               toFl[W_CREATE_INDEX] = new File(folder + "/" + cp.SQL_FILE_NAME[cp.CREATE_INDEX]);
+                               for(int i=0;i<toFl.length;i++){
                                        CmnUtils.debugPrint(fmFl[i].toString() + ">" + toFl[i].toString());
                                        toFl[i].delete();
                                        fmFl[i].renameTo(toFl[i]);
@@ -1227,50 +1024,50 @@ public class RapideMetaUnloader{
                                        tbName = tb.getName().replaceAll(".sql","");
                                        oTb = new File(tb + "." + phyfileExtension);
                                        CmnUtils.debugPrint(tbName);
-                                       br[0] = new BufferedReader(new FileReader(tb));
-                                       pw[0] = new PrintWriter(new BufferedWriter(new FileWriter(oTb)));
-                                       while((strLine=br[0].readLine()) != null){
-                                               if(strLine.equals(")" + cp.SQL_TERMINATOR[cp.dbType])){
+                                       br[WK_FILE] = new BufferedReader(new FileReader(tb));
+                                       pw[CONTENTS] = new PrintWriter(new BufferedWriter(new FileWriter(oTb)));
+                                       while((strLine=br[WK_FILE].readLine()) != null){
+                                               if(strLine.equals(");")){
                                                        rowNo = CmnUtils.getArrayRowNo(alData, 12, 1, tbName);
                                                        if (rowNo != -1){
                                                                rowData = CmnUtils.getArrayRowData(alData, 12, rowNo);
                                                                CmnUtils.debugPrint(tbName + ":" + rowNo);
                                                                //for(int j=0;j<rowData.length;i++)CmnUtils.debugPrint(rowData[j]);
-                                                               tbName = rowData[0];
-                                                               objName = rowData[1];
-                                                               objTyp = rowData[2];
-                                                               pctFree = rowData[3];
-                                                               pctUsed = rowData[4];
-                                                               iniTrns = rowData[5];
-                                                               freeLst = rowData[6];
-                                                               flstGrp = rowData[7];
-                                                               bufPool = rowData[8];
-                                                               tblSpace = rowData[9];
-                                                               logging = rowData[10];
-                                                               segByts = rowData[11];
-                                                               pw[0].print(") PCTFREE " + pctFree);
-                                                               if(!pctUsed.equals(""))pw[0].print(" PCTUSED " + pctUsed);
-                                                               pw[0].print(" INITRANS " + iniTrns + " STORAGE(");
-                                                               if(!freeLst.equals(""))pw[0].print(" FREELISTS " + freeLst);
-                                                               if(!flstGrp.equals(""))pw[0].print(" FREELIST GROUPS " + flstGrp);
-                                                               pw[0].print(" BUFFER_POOL " + bufPool + ")");
-                                                               pw[0].print(" TABLESPACE " + DB_SQL_QUOTED_S[cp.dbType]+ tblSpace + DB_SQL_QUOTED_E[cp.dbType]);
+                                                               tbName = rowData[COL01];
+                                                               objName = rowData[COL02];
+                                                               objTyp = rowData[COL03];
+                                                               pctFree = rowData[COL04];
+                                                               pctUsed = rowData[COL05];
+                                                               iniTrns = rowData[COL06];
+                                                               freeLst = rowData[COL07];
+                                                               flstGrp = rowData[COL08];
+                                                               bufPool = rowData[COL09];
+                                                               tblSpace = rowData[COL10];
+                                                               logging = rowData[COL11];
+                                                               segByts = rowData[COL12];
+                                                               pw[CONTENTS].print(") PCTFREE " + pctFree);
+                                                               if(!pctUsed.equals(""))pw[CONTENTS].print(" PCTUSED " + pctUsed);
+                                                               pw[CONTENTS].print(" INITRANS " + iniTrns + " STORAGE(");
+                                                               if(!freeLst.equals(""))pw[CONTENTS].print(" FREELISTS " + freeLst);
+                                                               if(!flstGrp.equals(""))pw[CONTENTS].print(" FREELIST GROUPS " + flstGrp);
+                                                               pw[CONTENTS].print(" BUFFER_POOL " + bufPool + ")");
+                                                               pw[CONTENTS].print(" TABLESPACE " + cp.DB_SQL_QUOTEDS[cp.dbType]+ tblSpace + cp.DB_SQL_QUOTEDE[cp.dbType]);
                                                                if(logging.equals("NO")){
-                                                                       pw[0].println(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                                       pw[CONTENTS].print(" NOLOGGING" + cp.SQL_TERMINATOR[cp.dbType]);
                                                                } else {
-                                                                       pw[0].println(cp.SQL_TERMINATOR[cp.dbType]);
+                                                                       pw[CONTENTS].print(cp.SQL_TERMINATOR[cp.dbType]);
                                                                }
                                                        } else {
-                                                               pw[0].println(")" + cp.SQL_TERMINATOR[cp.dbType]);
+                                                               pw[CONTENTS].print(")" + cp.SQL_TERMINATOR[cp.dbType]);
                                                        }
                                                } else {
-                                                       pw[0].println(strLine);
+                                                       pw[CONTENTS].println(strLine);
                                                }
                                        }
-                                       pw[0].close();
-                                       pw[0]=null;
-                                       br[0].close();
-                                       br[0]=null;
+                                       pw[CONTENTS].close();
+                                       pw[CONTENTS]=null;
+                                       br[WK_FILE].close();
+                                       br[WK_FILE]=null;
                                        tb.delete();
                                        oTb.renameTo(tb);
                                }
@@ -1279,8 +1076,8 @@ public class RapideMetaUnloader{
 
                        // Remove work file
                        File fl= null;
-                       for(int i=0;i<sql[cp.dbType].length;i++){
-                               fl= new File(folder + "/" + FILE_NAME[i] + "_" + database + "." + cp.fileExtension);
+                       for(int i=0;i<cp.meta_sql[cp.dbType].length;i++){
+                               fl= new File(folder + "/" + cp.WK_FILE_NAME[i] + "_" + database + "." + cp.fileExtension);
                                CmnUtils.debugPrint(fl.toString());
                                fl.delete();
                        }
@@ -1326,18 +1123,14 @@ public class RapideMetaUnloader{
        private String commentOnTable(CmnProps _cp, String _tableName, String _tableCmnt, int _type) throws Exception{
                String retVal = "";
                if(!_tableCmnt.equals("")){
-                       switch (_cp.dbType) {
-                         case DB_TYPE_ORACLE:
-                               retVal = "COMMENT ON TABLE " + DB_SQL_QUOTED_S[_cp.dbType]+ _tableName + DB_SQL_QUOTED_E[_cp.dbType]+ " IS '" + _tableCmnt.replaceAll("'","''") + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
-                           break;
-                         case DB_TYPE_SQLSERVER:
-                               if(_type == TYPE_TABLE){
+                       if(_cp.dbType == _cp.DB_TYPE_ORACLE){
+                               retVal = "COMMENT ON TABLE " + _cp.DB_SQL_QUOTEDS[_cp.dbType]+ _tableName + _cp.DB_SQL_QUOTEDE[_cp.dbType]+ " IS '" + _tableCmnt.replaceAll("'","''") + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
+                       } else if(_cp.dbType == _cp.DB_TYPE_SQLSERVER){
+                               if(_type == _cp.TYPE_TABLE){
                                        retVal = "exec sys.sp_addextendedproperty @name=N'MS_Description',@value=N'" + _tableCmnt.replaceAll("'","''") + "',@level0type=N'schema',@level0name=N'dbo',@level1type=N'table',@level1name=N'" + _tableName + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
-                               } else if(_type == TYPE_VIEW){
+                               } else if(_type == _cp.TYPE_VIEW){
                                        retVal = "exec sys.sp_addextendedproperty @name=N'MS_Description',@value=N'" + _tableCmnt.replaceAll("'","''") + "',@level0type=N'schema',@level0name=N'dbo',@level1type=N'view',@level1name=N'" + _tableName + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
                                }
-                               break;
-                         default :
                        }
                }
                return retVal;
@@ -1345,18 +1138,14 @@ public class RapideMetaUnloader{
        private String commentOnColumn(CmnProps _cp, String _tableName, String _colName, String _colCmnt, int _type) throws Exception{
                String retVal = "";
                if(!_colCmnt.equals("")){
-                       switch (_cp.dbType) {
-                         case DB_TYPE_ORACLE:
-                               retVal = "COMMENT ON COLUMN " + DB_SQL_QUOTED_S[_cp.dbType]+ _tableName + DB_SQL_QUOTED_E[_cp.dbType]+ "." + DB_SQL_QUOTED_S[_cp.dbType]+ _colName + DB_SQL_QUOTED_E[_cp.dbType]+ " IS '" + _colCmnt.replaceAll("'","''") + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
-                           break;
-                         case DB_TYPE_SQLSERVER:
-                               if(_type == TYPE_TABLE){
+                       if(_cp.dbType == _cp.DB_TYPE_ORACLE){
+                               retVal = "COMMENT ON COLUMN " + _cp.DB_SQL_QUOTEDS[_cp.dbType]+ _tableName + _cp.DB_SQL_QUOTEDE[_cp.dbType]+ "." + _cp.DB_SQL_QUOTEDS[_cp.dbType]+ _colName + _cp.DB_SQL_QUOTEDE[_cp.dbType]+ " IS '" + _colCmnt.replaceAll("'","''") + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
+                       } else if(_cp.dbType == _cp.DB_TYPE_SQLSERVER){
+                               if(_type == _cp.TYPE_TABLE){
                                        retVal = "exec sys.sp_addextendedproperty @name=N'MS_Description',@value=N'" + _colCmnt.replaceAll("'","''") + "',@level0type=N'schema',@level0name=N'dbo',@level1type=N'table',@level1name=N'" + _tableName + "',@level2type=N'column',@level2name=N'" + _colName + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
-                               } else if(_type == TYPE_VIEW){
+                               } else if(_type == _cp.TYPE_VIEW){
                                        retVal = "exec sys.sp_addextendedproperty @name=N'MS_Description',@value=N'" + _colCmnt.replaceAll("'","''") + "',@level0type=N'schema',@level0name=N'dbo',@level1type=N'view',@level1name=N'" + _tableName + "',@level2type=N'column',@level2name=N'" + _colName + "'" + _cp.SQL_TERMINATOR[_cp.dbType];
                                }
-                           break;
-                         default :
                        }
                }
                return retVal;