Пример #1
0
        // 2. fill data from src database
        public void fill_from(data.dbname src_database_name)
        {
            var           schema          = new cmd_wraper.table_cmd(conn, table_name, src_database_name).show_createtable();
            var           columns_match   = System.Text.RegularExpressions.Regex.Matches(schema, @"\n\s+\`[a-zA-Z_]+\`\s");
            List <string> usefull_columns = new List <string>();

            foreach (System.Text.RegularExpressions.Match m in columns_match)
            {
                var v    = m.Value.Split('`');
                var name = v[1];
                if (name == "id")
                {
                    continue;
                }
                usefull_columns.Add(name);
            }
            var init_sql_schema = @"insert into {0}.{1} (old_id,old_server,{2}) select id as old_id,'{3}'as old_server, {2} from {3}.{1};";
            var column_strs     = new StringBuilder();

            foreach (var v in usefull_columns)
            {
                column_strs.Append(v);
                column_strs.Append(",");
            }
            column_strs.Remove(column_strs.Length - 1, 1);

            var init_sql = safeformat.format(init_sql_schema, database_name.database_name, table_name.table_name, column_strs.ToString(), src_database_name.database_name);
            var cmd      = conn.prepare_write_cmd(init_sql);

            new cmd_wraper.connection_cmd(conn).run_sql_text(init_sql);
        }
Пример #2
0
 public ogtable_deletor(U adaptor, data.database conn, data.dbname database_name, data.tbname table_name)
 {
     this.adaptor       = adaptor;
     this.database_name = database_name;
     this.table_name    = table_name;
     this.cur_conn      = conn;
 }
Пример #3
0
 public check_table(data.database curr_conn, data.tbname tbl_name, data.dbname db_name, diagram_rawdata profile)
 {
     this.curr_conn = curr_conn;
     this.tbl_name  = tbl_name;
     this.db_name   = db_name;
     this.profile   = profile;
 }
Пример #4
0
 public ogtable_writer(U data, data.database conn, data.dbname database_name, data.tbname table_name)
 {
     this.adaptor       = data;
     this.curr_conn     = conn;
     this.table_name    = table_name;
     this.database_name = database_name;
 }
Пример #5
0
        // 1. create a mirror table
        public void copy_from(data.dbname src_database_name)
        {
            var schema_str = new cmd_wraper.table_cmd(conn, table_name, src_database_name).show_createtable();
            // reset the auto increate id
            var auto_inc_pattern = @"AUTO_INCREMENT\=[\d]+\s";
            var new_inc_pattern  = @"AUTO_INCREMENT=" + UInt32.MaxValue.ToString() + @" ";

            schema_str = System.Text.RegularExpressions.Regex.Replace(schema_str, auto_inc_pattern, new_inc_pattern);
            // unique key to index
            schema_str = schema_str.Replace("UNIQUE KEY", "INDEX");
            // create table
            var target_table = new cmd_wraper.table_cmd(conn, table_name, database_name);

            target_table.create_table(schema_str);
            // alter table add serverid/oldid
            target_table.alter_table(@"ADD COLUMN old_server varchar(255) COLLATE utf8_bin DEFAULT NULL,ADD COLUMN old_id bigint(20) NOT NULL");
            target_table.alter_table(@"ADD INDEX (old_server),ADD INDEX (old_id)");
        }
Пример #6
0
        // 3. clone a table
        public void clone_from(data.dbname src_database_name, int expected_cnt)
        {
            var schema_str = new cmd_wraper.table_cmd(conn, table_name, src_database_name).show_createtable();
            // reset the auto increate id
            var auto_inc_pattern = @"AUTO_INCREMENT\=[\d]+\s";
            var new_inc_pattern  = @"AUTO_INCREMENT=" + UInt32.MaxValue.ToString() + @" ";

            schema_str = System.Text.RegularExpressions.Regex.Replace(schema_str, auto_inc_pattern, new_inc_pattern);

            var cnt = new cmd_wraper.table_cmd(conn, table_name, src_database_name).get_record_count();

            if (expected_cnt >= 0 && cnt != expected_cnt)
            {
                throw new Exception("not empty table," + table_name.table_name);
            }
            var target_table = new cmd_wraper.table_cmd(conn, table_name, database_name);

            target_table.create_table(schema_str);
        }
Пример #7
0
 public database_cmd(data.database db, data.dbname db_name)
 {
     current_conn = db;
     this.db_name = db_name;
 }
Пример #8
0
 public nltable_cmd(data.database conn, data.dbname dbname, data.tbname tblname)
 {
     this.conn          = conn;
     this.database_name = dbname;
     this.table_name    = tblname;
 }
Пример #9
0
 public void clone_from(data.dbname src_database_name)
 {
     clone_from(src_database_name, 0);
 }
Пример #10
0
 public table_cmd(data.database db, data.tbname table_name, data.dbname db_name)
 {
     current_conn    = db;
     this.table_name = table_name.table_name;
     this.db_name    = db_name.database_name;
 }