Exemplo n.º 1
0
 public MySqlScript(SCHEMA source, SCHEMA target)
 {
     this.m_Source = source;
     this.m_Target = target;
 }
Exemplo n.º 2
0
        public static SCHEMA GetSCHEMA(string conn, string dbname)
        {
            TableMySQL sqltable = new TableMySQL(conn);
            SCHEMA     schema   = new SCHEMA(dbname);
            DataTable  dt       = sqltable.Get("select * from information_schema.tables where TABLE_TYPE='BASE TABLE' AND Table_SCHEMA ='" + dbname + "'");

            foreach (DataRow dr in dt.Rows)
            {
                TABLE table = new TABLE();
                table.TABLE_SCHEMA    = ((dr["TABLE_SCHEMA"] == DBNull.Value) ? "" : dr["TABLE_SCHEMA"].ToString());
                table.TABLE_NAME      = ((dr["TABLE_NAME"] == DBNull.Value) ? "" : dr["TABLE_NAME"].ToString());
                table.TABLE_TYPE      = MySqlCore.GetTABLE_TYPE(dr["TABLE_TYPE"].ToString());
                table.ENGINE          = MySqlCore.GetENGINE(dr["ENGINE"].ToString());
                table.TABLE_ROWS      = ((dr["TABLE_ROWS"] == DBNull.Value) ? 0uL : ((ulong)dr["TABLE_ROWS"]));
                table.DATA_LENGTH     = ((dr["DATA_LENGTH"] == DBNull.Value) ? 0uL : ((ulong)dr["DATA_LENGTH"]));
                table.MAX_DATA_LENGTH = ((dr["MAX_DATA_LENGTH"] == DBNull.Value) ? 0uL : ((ulong)dr["MAX_DATA_LENGTH"]));
                table.INDEX_LENGTH    = ((dr["INDEX_LENGTH"] == DBNull.Value) ? 0uL : ((ulong)dr["INDEX_LENGTH"]));
                table.CREATE_TIME     = ((dr["CREATE_TIME"] == DBNull.Value) ? DateTime.MinValue : ((DateTime)dr["CREATE_TIME"]));
                table.UPDATE_TIME     = ((dr["UPDATE_TIME"] == DBNull.Value) ? DateTime.MinValue : ((DateTime)dr["UPDATE_TIME"]));
                table.TABLE_COMMENT   = ((dr["TABLE_COMMENT"] == DBNull.Value) ? "" : dr["TABLE_COMMENT"].ToString());
                table.ROW_FORMAT      = ((dr["ROW_FORMAT"] == DBNull.Value) ? "" : dr["ROW_FORMAT"].ToString());
                schema.TABLES.Add(table);
                DataTable dtcol = sqltable.Get(string.Concat(new string[]
                {
                    "select * from COLUMNs where table_schema='",
                    table.TABLE_SCHEMA,
                    "' and table_name='",
                    table.TABLE_NAME,
                    "';"
                }));
                foreach (DataRow drcol in dtcol.Rows)
                {
                    COLUMN column = new COLUMN();
                    column.TABLE_SCHEMA             = dbname;
                    column.TABLE_NAME               = table.TABLE_NAME;
                    column.COLUMN_NAME              = drcol["COLUMN_NAME"].ToString();
                    column.ORDINAL_POSITION         = (drcol["ORDINAL_POSITION"] == DBNull.Value) ? 0uL : Convert.ToUInt64(drcol["ORDINAL_POSITION"]);
                    column.COLUMN_DEFAULT           = drcol["COLUMN_DEFAULT"];
                    column.IS_NULLABLE              = MySqlCore.GetIS_NULLABLE(drcol["IS_NULLABLE"].ToString());
                    column.DATA_TYPE                = MySqlCore.GetDATA_TYPE(drcol["DATA_TYPE"].ToString());
                    column.CHARACTER_MAXIMUM_LENGTH = (drcol["CHARACTER_MAXIMUM_LENGTH"] == DBNull.Value) ? 0uL : Convert.ToUInt64(drcol["CHARACTER_MAXIMUM_LENGTH"]);
                    column.CHARACTER_OCTET_LENGTH   = (drcol["CHARACTER_OCTET_LENGTH"] == DBNull.Value) ? 0uL : Convert.ToUInt64(drcol["CHARACTER_OCTET_LENGTH"]);
                    column.NUMERIC_PRECISION        = (drcol["NUMERIC_PRECISION"] == DBNull.Value) ? 0uL : Convert.ToUInt64(drcol["NUMERIC_PRECISION"]);
                    column.NUMERIC_SCALE            = (drcol["NUMERIC_SCALE"] == DBNull.Value) ? 0uL : Convert.ToUInt64(drcol["NUMERIC_SCALE"]);
                    column.COLUMN_TYPE              = ((drcol["COLUMN_TYPE"] == DBNull.Value) ? "" : drcol["COLUMN_TYPE"].ToString());
                    column.COLUMN_KEY               = MySqlCore.GetCOLUMN_KEY(drcol["COLUMN_KEY"].ToString());
                    column.COLUMN_COMMENT           = drcol["COLUMN_COMMENT"].ToString();
                    column.EXTRA = ((drcol["EXTRA"] == DBNull.Value) ? "" : drcol["EXTRA"].ToString());
                    table.COLUMNS.Add(column);
                }
                DataTable dtindex = sqltable.Get(string.Concat(new string[]
                {
                    "select *  from information_schema.statistics where table_schema='",
                    table.TABLE_SCHEMA,
                    "' and table_name='",
                    table.TABLE_NAME,
                    "';"
                }));
                foreach (DataRow dri in dtindex.Rows)
                {
                    string indexname = dri["INDEX_NAME"].ToString();
                    if (!(indexname == "PRIMARY"))
                    {
                        INDEX model = table.INDEXS.Find((INDEX p) => p.INDEX_NAME == indexname);
                        if (model == null)
                        {
                            model             = new INDEX();
                            model.INDEX_NAME  = indexname;
                            model.NON_UNIQUE  = Convert.ToInt32(dri["NON_UNIQUE"]);
                            model.COLUMN_NAME = string.Format("`{0}` ASC", dri["COLUMN_NAME"]);
                            table.INDEXS.Add(model);
                        }
                        else
                        {
                            model.COLUMN_NAME += string.Format(",`{0}` ASC", dri["COLUMN_NAME"]);
                        }
                    }
                }
            }
            return(schema);
        }