【旁路导入】LoadData 导入一直报错`ERROR 1172 (42000): Result consisted of more than one row`

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】


【问题描述】清晰明确描述问题
目前在测试旁路导入的性能,但是使用的过程中发现一些问题 ,具体的使用流程如下:

  1. 源数据:
    一个 csv 文件一共 76G


    其中的数据为:

  2. 接下来登录 obclient 开始数据导入,其中报错如下:

  3. observer 中的报错日志:

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

Result consisted of more than one row`
看看数据源是否分隔符有冲突。 确保按逗号分隔使每行数据个数和表字段数是一样的。
麻烦发下LoadDATA的相关完整日志呢

这个是 loaddata 的日志

表结构:

数据格式:

看起来是没有冲突呢

这里有几个疑问哈

  1. load_data 导入数据的时候,有限定文件的大小吗?
  2. load_data 导入数据的时候,会限定行数吗?

loaddata相关参数可以参考下 OceanBase分布式数据库-海量数据 笔笔算数

当前数据多大呢

1 个赞

我参考的就是这个流程哈~ 但是数据导入会存在问题。

最原始的数据是一个 csv 文件79G, 报错以后我重新生成一个 2G的文件,重新数据导入,依旧还是报错。

有什么解决办法吗?


image
把false换成true试试看,

还是一样的报错

补充一下

这个 csv 文件是从 tidb 导出来的,是不兼容吗?

你这个load data需要加 enclosed by ‘"’,否则会把"xxx-xxx"这个"当成数据的一部分导入。超过了char的长度了


这个语法

看起来不支持这个语法

现在有没有解决方案呀? 目前是 LOADDATA … ENCLOSED BY 是不支持的

帮忙找一下observer.log把not supported的日志。看起来不是enclosed by不支持。可能是别的情况。

最终的解决方案:

LOAD DATA /*+ direct(false,11) parallel(16) */ INFILE ‘/data11/home/vitusyang/bulk_load_data/tidb/bulk_load_test.sbtest1.000000000.csv’ into TABLE sbtest1 FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘"’ LINES TERMINATED BY ‘\r\n’ (id, k, c, pad);

以上 sql 可以解决