lightning 导入csv数据重复

【 TiDB 使用环境`】生产
【 TiDB 版本】 v5.3

lightning 版本 v5.0.0 、v5.3.0、v5.4.1

在使用lightning 导入一个大于10g文件时候,用local 导入数据库的行数总是比文件行数多了不少
即使设置了。duplicate-resolution = ‘remove’ 还是一样,请问这是哪方面出了问题



tidb-lightning-1.log (208.8 KB)

数据查询xxM_33 是我导入后改了名字的,不是查错表

tikv-importerz中的参数改成下面的试试

 backend = "tidb"
 on-duplicate = "replace"

tidb 慢了很多 ,所以采用local

相对导入数据重复,慢点可以接受。另外你写个查询语句看一下哪些数据重复,然后对应的原始导入数据中是不是有重复。

原始数据没有重复,tidb我试过是没问题 就是慢,现在是在想local 为啥有问题,理论上不应该

原始数据没有重复,tidb导入正常,用local导入出现问题的话,要么lightning参数配置有误,要么你的操作发现了一个隐藏bug。

想起来一个很类似的 bug 呢。不知道您的表里是否有自增 id 列且 csv 文件里没有这一列(需要 Lightning 做填充)呢?

所以有什么配置会影响这个?

没有设置自增 和 主键

没事。只是有一个这样类似的 bug (local 模式导入之后数量不准确,原因是 Lightning 自己填充的自增 ID 有溢出风险,是个 bug)。看来现在并不是这个问题。

方便 share 一下表结构吗?

CREATE TABLE FutureOptionTransaction_M (
id varchar(50) NOT NULL,
OptionCode varchar(50) DEFAULT NULL,
datetime datetime DEFAULT NULL,
DealPrice decimal(18,4) DEFAULT NULL,
DealVol bigint(20) DEFAULT NULL,
DealAmount decimal(18,4) DEFAULT NULL,
DealOrderQty bigint(20) DEFAULT NULL,
Buy1Price decimal(18,4) DEFAULT NULL,
Buy2Price decimal(18,4) DEFAULT NULL,
Buy3Price decimal(18,4) DEFAULT NULL,
Buy4Price decimal(18,4) DEFAULT NULL,
Buy5Price decimal(18,4) DEFAULT NULL,
Sell1Price decimal(18,4) DEFAULT NULL,
Sell2Price decimal(18,4) DEFAULT NULL,
Sell3Price decimal(18,4) DEFAULT NULL,
Sell4Price decimal(18,4) DEFAULT NULL,
Sell5Price decimal(18,4) DEFAULT NULL,
Buy1OrderQty bigint(20) DEFAULT NULL,
Buy2OrderQty bigint(20) DEFAULT NULL,
Buy3OrderQty bigint(20) DEFAULT NULL,
Buy4OrderQty bigint(20) DEFAULT NULL,
Buy5OrderQty bigint(20) DEFAULT NULL,
Sell1OrderQty bigint(20) DEFAULT NULL,
Sell2OrderQty bigint(20) DEFAULT NULL,
Sell3OrderQty bigint(20) DEFAULT NULL,
Sell4OrderQty bigint(20) DEFAULT NULL,
Sell5OrderQty bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

您好,麻烦执行下面操作后反馈执行结果。

  • show config where name like '%collations%'; 以查看 new_collations_enabled_on_first_bootstrap 是否开启。
  • 对导入数据后的有问题的表执行 admin check table futureOptionTransaction_M_33; 以查看表数据是否一致。
  • explain select count(1) from futureOptionTransaction_M_33; 以及 explain select count(1),sum(DelVol) from futureOptionTransaction_M_33; 查看执行计划是否有所不同。
1 个赞

new_collations_enabled_on_first_bootstrap 是false


看执行计划,你执行 select count(1) from futureOptionTransaction_M_33 是多少?

admin check table 执行了吗



麻烦设置 backslash-escape = false 后,再操作一次,辛苦。

另外确认一个,前后发送的表是结构一致的吗?因为看到发送的表结构中无主键但执行计划中显示有主键,最好使用同一张表排查问题吧。