You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JOOQ将Data表记录复制到结构相似的DataDraft表

用JOOQ实现Data表记录到DataDraft表的迁移(无需逐个字段复制)

方法一:利用Record.into()对象转换(单条/小批量场景)

如果两张表的字段名、数据类型基本匹配,可直接通过JOOQ的Record.into()完成对象转换:

  1. 读取Data表指定记录:
// 假设已初始化DSLContext实例dsl
DataRecord dataRecord = dsl.selectFrom(DATA)
                           .where(DATA.ID.eq(123))
                           .fetchOne();
  1. 转换并插入DataDraft表:
if (dataRecord != null) {
    // 自动映射匹配字段
    DataDraftRecord draftRecord = dataRecord.into(DataDraftRecord.class);
    
    // 若存在少量差异字段(如DataDraft新增的create_time),手动补充
    draftRecord.setCreateTime(LocalDateTime.now());
    
    // 执行插入
    draftRecord.insert();
}

批量场景可结合流处理+批量插入提升效率:

List<DataRecord> dataRecords = dsl.selectFrom(DATA)
                                   .where(DATA.STATUS.eq("VALID"))
                                   .fetch();

List<DataDraftRecord> draftRecords = dataRecords.stream()
                                                .map(r -> r.into(DataDraftRecord.class))
                                                .peek(r -> r.setCreateTime(LocalDateTime.now()))
                                                .collect(Collectors.toList());

dsl.batchInsert(draftRecords).execute();

方法二:构造INSERT...SELECT语句(大数据量高效迁移)

无需将数据加载到Java内存,直接通过数据库层面的语句完成迁移,性能最优:

dsl.insertInto(DATA_DRAFT)
   // 字段完全一致时可省略columns(),直接select(*)
   .columns(DATA_DRAFT.ID, DATA_DRAFT.NAME, DATA_DRAFT.CONTENT)
   .select(
       select(DATA.ID, DATA.NAME, DATA.CONTENT)
       .from(DATA)
       .where(DATA.CREATE_TIME.greaterThan(LocalDate.now().minusDays(7)))
   )
   .execute();

字段不完全匹配的处理方案

若存在少量字段名/类型差异,可手动指定映射关系:

// 示例:Data表的CONTENT字段对应DataDraft表的DETAIL字段
dsl.insertInto(DATA_DRAFT)
   .columns(DATA_DRAFT.ID, DATA_DRAFT.NAME, DATA_DRAFT.DETAIL)
   .select(
       select(
           DATA.ID,
           DATA.NAME,
           DATA.CONTENT.map(DATA_DRAFT.DETAIL) // 显式字段映射
       )
       .from(DATA)
       .where(DATA.ID.eq(123))
   )
   .execute();

内容的提问来源于stack exchange,提问作者Mahdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:49:52