def load_common_columns(self, src_tbl, dst_tbl, src_curs, dst_curs): """Get common fields, put pkeys in start.""" self.pkey_list = skytools.get_table_pkeys(src_curs, src_tbl) dst_pkey = skytools.get_table_pkeys(dst_curs, dst_tbl) if dst_pkey != self.pkey_list: self.log.error('pkeys do not match') sys.exit(1) src_cols = skytools.get_table_columns(src_curs, src_tbl) dst_cols = skytools.get_table_columns(dst_curs, dst_tbl) field_list = [] for f in self.pkey_list: field_list.append(f) for f in src_cols: if f in self.pkey_list: continue if f in dst_cols: field_list.append(f) self.common_fields = field_list fqlist = [skytools.quote_ident(col) for col in field_list] self.fq_common_fields = fqlist cols = ",".join(fqlist) self.log.debug("using columns: %s" % cols)
def gen_copy_tbl(self, src_curs, dst_curs, where): """Create COPY expession from common fields.""" self.pkey_list = skytools.get_table_pkeys(src_curs, self.table_name) dst_pkey = skytools.get_table_pkeys(dst_curs, self.table_name) if dst_pkey != self.pkey_list: self.log.error('pkeys do not match') sys.exit(1) src_cols = skytools.get_table_columns(src_curs, self.table_name) dst_cols = skytools.get_table_columns(dst_curs, self.table_name) field_list = [] for f in self.pkey_list: field_list.append(f) for f in src_cols: if f in self.pkey_list: continue if f in dst_cols: field_list.append(f) self.common_fields = field_list fqlist = [skytools.quote_ident(col) for col in field_list] tbl_expr = "select %s from %s" % (",".join(fqlist), self.fq_table_name) if where: tbl_expr += ' where ' + where tbl_expr = "COPY (%s) TO STDOUT" % tbl_expr self.log.debug("using copy expr: %s", tbl_expr) return tbl_expr
def gen_copy_tbl(self, src_curs, dst_curs, where): """Create COPY expession from common fields.""" self.pkey_list = skytools.get_table_pkeys(src_curs, self.table_name) dst_pkey = skytools.get_table_pkeys(dst_curs, self.table_name) if dst_pkey != self.pkey_list: self.log.error('pkeys do not match') sys.exit(1) src_cols = skytools.get_table_columns(src_curs, self.table_name) dst_cols = skytools.get_table_columns(dst_curs, self.table_name) field_list = [] for f in self.pkey_list: field_list.append(f) for f in src_cols: if f in self.pkey_list: continue if f in dst_cols: field_list.append(f) self.common_fields = field_list fqlist = [skytools.quote_ident(col) for col in field_list] tbl_expr = "select %s from %s" % (",".join(fqlist), self.fq_table_name) if where: tbl_expr += ' where ' + where tbl_expr = "COPY (%s) TO STDOUT" % tbl_expr self.log.debug("using copy expr: %s" % tbl_expr) return tbl_expr
def load_common_columns(self, src_tbl, dst_tbl, src_curs, dst_curs): """Get common fields, put pkeys in start.""" self.pkey_list = skytools.get_table_pkeys(src_curs, src_tbl) dst_pkey = skytools.get_table_pkeys(dst_curs, dst_tbl) if dst_pkey != self.pkey_list: self.log.error('pkeys do not match') sys.exit(1) src_cols = skytools.get_table_columns(src_curs, src_tbl) dst_cols = skytools.get_table_columns(dst_curs, dst_tbl) field_list = [] for f in self.pkey_list: field_list.append(f) for f in src_cols: if f in self.pkey_list: continue if f in dst_cols: field_list.append(f) self.common_fields = field_list fqlist = [skytools.quote_ident(col) for col in field_list] self.fq_common_fields = fqlist cols = ",".join(fqlist) self.log.debug("using columns: %s", cols)
def real_copy(self, srccurs, dstcurs, tbl_stat): "Main copy logic." tablename = tbl_stat.name # drop data if tbl_stat.skip_truncate: self.log.info("%s: skipping truncate" % tablename) else: self.log.info("%s: truncating" % tablename) dstcurs.execute("truncate " + tablename) # do copy self.log.info("%s: start copy" % tablename) col_list = skytools.get_table_columns(srccurs, tablename) stats = skytools.full_copy(tablename, srccurs, dstcurs, col_list) if stats: self.log.info("%s: copy finished: %d bytes, %d rows" % ( tablename, stats[0], stats[1]))