Tidb lightning 导入数据可以跳过指定列吗

【 TiDB 使用环境】测试
【 TiDB 版本】6.5.3
Oracle数据库的数据迁移到TiDB,表数据量千万级。
源端数据库:Oracle 11g
目标端数据库:Tidb 6.5.3
目标端已创建表,与源端数据库库相比,多一个自增列字段
目前采用的方法为在导出时加一个空列,可以实现数据装载。
咨询一下lightning导入时可以指定跳过目标库的表的某些列吗

没找到这样的功能

tiCDC可以实现过滤

配置文件中的 skip-column 参数来指定要跳过的列。

[mydumper]
skip-column = [“column1”, “column2”]

column1column2 是要跳过列的名称

不可以,参考lightning详细配置文件:
https://docs.pingcap.com/zh/tidb/v6.5/tidb-lightning-configuration

只需导出时带上列头即可,倒入时自然会按列倒入

2 个赞

亲测有效,默认行为是以下配置,lightning会按照列对应字段导入,即使顺序不一样也是可以导入
[mydumper.csv]
header = true

:thinking:没看到有这个配置?

正解,你可以给数据文件的开头添加具体的字段名,导入时会按数据文件的文件头字段名进行导入,我们的处理方法是通过脚本的形式进行处理:
(1)先把表的所有字段名都查出来,然后把不需要导入的字段名去掉,最后把剩下的字段名按照顺序形成表头(注意字段名之间添加分隔符);
(2)把表头作为一行添加到数据文件的文件头,最后导入即可实现按所需字段进行导入。

没有这个功能吧,为啥要跳过列呢

dm可以啊

不支持

楼主是从Oracle到TiDB

不可以,导出的数据格式如果是csv的,自己用脚本处理下去,或许能满足你的要求

Oracle数据库的数据迁移到TiDB千万级别不算多,可以考虑下navicat的数据传输,一小时传几千万没问题

:thinking:navicat那个传输,小数据量还行,大数据量就太慢了,不如用etl工具kettle快,主要是可以开启多线程。

不算快,多个表可以多开,每秒几万条还是可以的,千万级别速度还行

:flushed:有那么快么?实际用的过程中感觉没那么快啊。也可能是我这边的硬件配置较低。