Navigation

    数据用户治理组

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    mysql到mysql,宽表增量失败

    问答区
    宽表增量sh 宽表构建
    1
    2
    1439
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 声声慢
      声声慢 last edited by

      CloudCanal 社区版 v2.2.3.1
      源端:MySQL ,版本5.7
      对端:MySQL,版本5.7
      数据问题产生阶段:增量
      **问题描述:**自定义代码全部跑完,return过之后大概2s后debug断开抛出异常,4233d0ad-68c5-4099-95be-2da6813d3e86-image.png
      源端表结构:
      CREATE TABLE legal_aid_orm_case_satisfaction (
      id int(11) NOT NULL,
      t_case_id int(11) NOT NULL COMMENT ‘案件id’,
      satisfaction_degree varchar(50) DEFAULT NULL COMMENT ‘满意度 1-满意 2-基本满意 3-不满意 4-系统默认满意’,
      dissatisfaction_reason varchar(255) DEFAULT NULL COMMENT ‘不满意原因’,
      modify_num int(4) NOT NULL DEFAULT ‘0’ COMMENT ‘修改次数’,
      signature varchar(200) DEFAULT NULL COMMENT ‘签名认证(暂未实现)’,
      creator_global_id varchar(100) NOT NULL COMMENT ‘创建人’,
      create_time datetime NOT NULL COMMENT ‘创建时间’,
      modifier_global_id varchar(100) NOT NULL COMMENT ‘修改人’,
      modify_time datetime NOT NULL COMMENT ‘修改时间’,
      is_deleted tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘是否删除, 0:否, 1:是’,
      data_source int(4) NOT NULL COMMENT ‘1-审批不通过插入的数据 2-审批通过插入的数据 3-审批通过24小时候发送短信后修改的状态 4-审批通过待指派阶段评价状态’,
      process_way varchar(100) DEFAULT NULL COMMENT ‘受援人评价途径,paperless=无纸化设备 web/null=评价网页 wechat=小程序评价’,
      displeasure_reason_autofill tinyint(1) DEFAULT NULL COMMENT ‘不满意原因是否自动填充, 0:否, 1:是’,
      PRIMARY KEY (id) USING BTREE,
      KEY index_t_case_id (t_case_id) USING BTREE
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
      源端维表结构:
      CREATE TABLE legal_aid_orm_case_satisfaction (
      id int(11) NOT NULL,
      t_case_id int(11) NOT NULL COMMENT ‘案件id’,
      satisfaction_degree varchar(50) DEFAULT NULL COMMENT ‘满意度 1-满意 2-基本满意 3-不满意 4-系统默认满意’,
      dissatisfaction_reason varchar(255) DEFAULT NULL COMMENT ‘不满意原因’,
      modify_num int(4) NOT NULL DEFAULT ‘0’ COMMENT ‘修改次数’,
      signature varchar(200) DEFAULT NULL COMMENT ‘签名认证(暂未实现)’,
      creator_global_id varchar(100) NOT NULL COMMENT ‘创建人’,
      create_time datetime NOT NULL COMMENT ‘创建时间’,
      modifier_global_id varchar(100) NOT NULL COMMENT ‘修改人’,
      modify_time datetime NOT NULL COMMENT ‘修改时间’,
      is_deleted tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘是否删除, 0:否, 1:是’,
      data_source int(4) NOT NULL COMMENT ‘1-审批不通过插入的数据 2-审批通过插入的数据 3-审批通过24小时候发送短信后修改的状态 4-审批通过待指派阶段评价状态’,
      process_way varchar(100) DEFAULT NULL COMMENT ‘受援人评价途径,paperless=无纸化设备 web/null=评价网页 wechat=小程序评价’,
      displeasure_reason_autofill tinyint(1) DEFAULT NULL COMMENT ‘不满意原因是否自动填充, 0:否, 1:是’,
      PRIMARY KEY (id) USING BTREE,
      KEY index_t_case_id (t_case_id) USING BTREE
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
      源端维表结构2:
      CREATE TABLE legal_aid_case_user_info (
      id int(11) NOT NULL,
      t_case_id int(11) DEFAULT NULL COMMENT ‘案件id’,
      t_rp_user_id int(11) DEFAULT NULL COMMENT ‘受援人账户id’,
      head_pic varchar(200) DEFAULT NULL COMMENT ‘头像,默认-xxx’,
      is_head_pic_adopt tinyint(1) DEFAULT ‘0’ COMMENT ’ 头像状态:1: 审核通过 0: 审核不通过’,
      is_authentication tinyint(1) DEFAULT NULL COMMENT ‘是否实名认证’,
      name varchar(50) DEFAULT NULL COMMENT ‘姓名’,
      birthdate date DEFAULT NULL COMMENT ‘出生日期’,
      dic_card_type varchar(100) DEFAULT NULL COMMENT ‘证件类型1、身份证 2、户口 3、护照’,
      card_code varchar(50) DEFAULT NULL COMMENT ‘证件号’,
      dic_gender varchar(100) DEFAULT NULL COMMENT ‘性别:1、男 2、女 0、未知’,
      dic_nation varchar(100) DEFAULT NULL COMMENT ‘民族,字典:’,
      dic_nationality varchar(100) DEFAULT NULL COMMENT ‘国籍’,
      t_sms_province int(11) DEFAULT NULL COMMENT ‘省’,
      t_sms_city int(11) DEFAULT NULL COMMENT ‘市’,
      t_sms_area int(11) DEFAULT NULL COMMENT ‘地区’,
      mobile varchar(50) DEFAULT NULL COMMENT ‘电话’,
      regis varchar(200) DEFAULT NULL COMMENT ‘户籍’,
      dic_health varchar(100) DEFAULT NULL COMMENT ‘健康状况:1、优 2、良 3、中 4、一般’,
      usual_addr varchar(200) DEFAULT NULL COMMENT ‘常住地’,
      dic_edu_level varchar(100) DEFAULT NULL COMMENT ‘文化程度:1、博士 2、硕士 3、本科 4、大专 5、中专和中技 6、高中 7、初中 8、小学及小学以下’,
      dic_legal_inst_way varchar(100) DEFAULT NULL COMMENT ‘文书送达方式:1、邮寄 2、自取’,
      work_unit varchar(200) DEFAULT NULL COMMENT ‘单位’,
      legal_inst_addr varchar(200) DEFAULT NULL COMMENT ‘文书邮寄地址’,
      dic_occupation varchar(100) DEFAULT NULL COMMENT ‘职业:1、国家机关、党群组织、企业、事业单位负责人 2、专业技术人员 3、商业、服务业人员 4、农、林、牧、渔、水利业生产人员 5、生产、运输设备操作人员及有关人员 6、军人 7、不便分类的其他从业人员’,
      zip_code int(11) DEFAULT NULL COMMENT ‘邮编’,
      remark varchar(500) DEFAULT NULL COMMENT ‘备注’,
      family_size int(11) DEFAULT NULL COMMENT ‘家庭人数’,
      family_income int(11) DEFAULT NULL COMMENT ‘家庭总收入’,
      per_monthly_income int(11) DEFAULT NULL COMMENT ‘人均月收入’,
      per_monthly_outcome int(11) DEFAULT NULL COMMENT ‘人均月开支’,
      is_property tinyint(1) DEFAULT NULL COMMENT '是否有房产, 0: 否, 1: 是 ',
      acreage varchar(50) DEFAULT NULL COMMENT ‘面积, 单位:平方米’,
      is_car tinyint(1) DEFAULT NULL COMMENT ‘是否有汽车’,
      is_other_assets tinyint(1) DEFAULT NULL COMMENT ‘是否有现金、存款、证券’,
      is_villa tinyint(1) DEFAULT NULL COMMENT ‘是否有别墅、高档住宅’,
      is_apply tinyint(1) DEFAULT NULL COMMENT ‘是否曾经申请过法律援助事项’,
      apply_address varchar(100) DEFAULT NULL COMMENT ‘曾经申请地点’,
      apply_date date DEFAULT NULL COMMENT ‘曾经申请时间’,
      asset_total_value int(11) DEFAULT NULL COMMENT ‘资产总价值’,
      creator_global_id varchar(100) NOT NULL COMMENT ‘创建人’,
      create_time datetime NOT NULL COMMENT ‘创建时间’,
      modifier_global_id varchar(100) NOT NULL COMMENT ‘修改人’,
      modify_time datetime NOT NULL COMMENT ‘修改时间’,
      is_deleted tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘是否删除, 0:否, 1:是’,
      judicial_id varchar(100) DEFAULT NULL COMMENT ‘对应司法部上报的id’,
      zw_user_id varchar(100) DEFAULT NULL COMMENT ‘政务网用户的的id’,
      PRIMARY KEY (id) USING BTREE,
      KEY t_rp_user_id (t_rp_user_id) USING BTREE,
      KEY t_caseId_index (t_case_id) USING BTREE
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT=‘案件_用户信息表’;
      对端表结构:
      CREATE TABLE satisfaction (
      id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
      table_id varchar(50) NOT NULL COMMENT ‘关联表主键’,
      name varchar(30) DEFAULT NULL COMMENT ‘姓名’,
      phone varchar(30) DEFAULT NULL COMMENT ‘手机号’,
      satisfaction int(11) NOT NULL COMMENT ‘满意度’,
      new_project varchar(50) NOT NULL COMMENT ‘办件号’,
      new_district bigint(20) DEFAULT NULL COMMENT ‘地区’,
      evaluate_time varchar(30) DEFAULT NULL COMMENT ‘评价时间’,
      type varchar(30) DEFAULT NULL COMMENT ‘类型’,
      is_del tinyint(1) DEFAULT NULL COMMENT ‘是否删除 0:未删除 1:删除’,
      PRIMARY KEY (id) USING BTREE,
      KEY idx_phone (phone) USING BTREE,
      KEY idx_project_id (new_project) USING BTREE,
      KEY idx_time (evaluate_time) USING BTREE,
      KEY idx_type (type) USING BTREE,
      KEY idx_satisfaction (satisfaction) USING BTREE,
      KEY idx_select (satisfaction,new_district,evaluate_time,type) USING BTREE,
      KEY idx_area (new_district) USING BTREE
      ) ENGINE=InnoDB AUTO_INCREMENT=8424678 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT=‘12类办件满意度总表’;

      查询SQL:
      全量:
      第一个维表查询
      SELECT satisfaction_degree FROM plsms_biz_data.legal_aid_orm_case_satisfaction WHERE t_case_id=530397
      第二个维表查询
      com.mysql.cj.jdbc.ClientPreparedStatement: SELECT name,mobile FROM plsms_biz_data.legal_aid_case_user_info WHERE id=464523

      增量update时因为维表关联键没有进行映射故而先去查询源端关联维表主键:
      SELECT t_rp_user_id FROM plsms_biz_data.legal_aid_orm_caseWHERE id=?
      再去查询维表
      com.mysql.cj.jdbc.ClientPreparedStatement: SELECT name,mobile FROM plsms_biz_data.legal_aid_case_user_info WHERE id=?

      SELECT
      orm_case.id ,
      user_info.name,
      user_info.mobile,
      a.satisfaction_degree satisfaction
      orm_case.new_project,
      orm_case.new_district,
      orm_case.create_time,
      ‘legal-examine’ type
      from legal_aid_orm_case orm_case
      left join legal_aid_orm_case_satisfaction a on orm_case.id = a.t_case_id
      left join legal_aid_case_user_info user_info on orm_case.t_rp_user_id = user_info.id

      1 Reply Last reply Reply Quote 0
      • 声声慢
        声声慢 last edited by

        最后一个连表SQL主要是三张表的关联关系,因为第一个评论维表是与源表主键ID相关联的,我这边宽表也是有映射的。第二个用户表没有映射,update时源表t_rp_user_id为空,无法查询数据,故先去根据主键ID把源表的t_rp_user_id查询出来再根据t_rp_user_id查询第二张维表中的name,mobile字段。

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post
        Copyright © 2020 ClouGence, Inc.备案号:浙ICP备20007605号-2