// 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); }
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; }
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; }
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; }
// 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)"); }
// 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); }
public database_cmd(data.database db, data.dbname db_name) { current_conn = db; this.db_name = db_name; }
public nltable_cmd(data.database conn, data.dbname dbname, data.tbname tblname) { this.conn = conn; this.database_name = dbname; this.table_name = tblname; }
public void clone_from(data.dbname src_database_name) { clone_from(src_database_name, 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; }