def crt_tb_from_src_sys(self, src_tb_nm, src_db_cd, trgt_schm_nm='ods'): """ 数据同步时,源系统和目标表结构创建或者校验 :param src_tb_nm: :param src_db_cd: :param trgt_schm_nm: :return: """ trgt_tb_nm = self.tb_nm trgt_db_cd = self.conn.db_cd src_conn = Conn(src_db_cd) src_meta = src_conn.get_tb_strct(src_tb_nm) # 获取表结构 src_conn.close() if src_meta: if trgt_tb_nm is None: # 如果没有设定目标表名,需要自动生成目标表名 trgt_tb_nm = self.get_auto_el_tb_nm(schema=trgt_schm_nm) crt_tb_sql = crt_trgt_db_sql(src_meta, trgt_tb_nm, trgt_db_cd) trgt_conn = Conn(trgt_db_cd) rs = trgt_conn.upd_tb_strct(crt_tb_sql, schm_tb_nm=trgt_tb_nm, drop_direct=False) trgt_conn.close() return rs else: raise Exception("源数据库目标表表%s不存在" % src_tb_nm)
def get_cols(db_cd, tb_nm): """ 获取字段名 :param db_cd: 只是编号 :param tb_nm: :return: """ conn = Conn(db_cd) rs = conn.get_tb_strct(tb_nm) # 获取表结构 if rs: rs = rs['meta']['col_nm'] cols = list(rs) return cols # '"' + '","'.join(cols) + '"'
def src_tb_sync_ods(src_tb_nm, src_db_cd, trgt_tb_nm=None, trgt_db_cd=default_db_cd, trgt_schm_nm='ods', if_el_data=True): """ 源系统和目标表结构创建或者校验 :param if_el_data: 是否导入数据 :param src_tb_nm: :param src_db_cd: :param trgt_tb_nm: :param trgt_db_cd: :param trgt_schm_nm: :return: """ src_conn = Conn(src_db_cd) src_meta = src_conn.get_tb_strct(src_tb_nm) # 获取表结构 src_conn.close() if src_meta: if trgt_tb_nm is None: # 如果没有设定目标表名,需要自动生成目标表名 trgt_tb_nm = get_targt_tb_nm(src_meta['tb_nm'], src_meta['db_cd'], schema=trgt_schm_nm) crt_tb_sql = crt_trgt_db_sql(src_meta, trgt_tb_nm, trgt_db_cd) trgt_conn = Conn(trgt_db_cd) rs = trgt_conn.upd_tb_strct(crt_tb_sql, schm_tb_nm=trgt_tb_nm, drop_direct=False) trgt_conn.close() if if_el_data: datax(src_tb_nm, src_db_cd, trgt_tb_nm, write_conn=trgt_db_cd, check_tb_strct=False, logs_print=False) return rs else: raise Exception("源数据库目标表表%s不存在" % src_tb_nm)