使用load data infile导入数据报错

【产品名称】oceanbase

【产品版本】3.1.1

【问题描述】:文件已上传至proxy的机器,通过proxy连接数据库,load data infile ‘file’ replace into table tablename 报错:ERROR 5010 (21000) at line 1: Unknown operator, bad internal cmd,请问是什么原因呢

1 个赞

LOAD DATA:该语句用于从外部导入数据。

目前, OceanBase 是分布式数据库,读写数据由 Leader 节点进行,而 CSV 文件需要上传到 Leader 节点所在服务器才能加载,因此需要提供 NAS 文件系统进行文件存放。OceanBase 数据库中的 LOAD DATA 语句仅支持加载 OBServer 本地的输入文件。因此,用户需要在导入之前将文件拷贝到某台 OBServer 上。

LOAD DATA 目前可以对 CSV 格式的文本文件进行导入,整个导入的过程可以分为以下的流程:

解析文件:OceanBase 数据库会根据用户输入的文件名,读取文件中的数据,并且根据指定的并行度来决定并行或者串行解析输入文件中的数据。

分发数据:由于 OceanBase 是分布式数据库,各个分区的数据可能分布在各个不同的 OBServer,LOAD DATA 会对解析出来的数据进行计算,决定数据需要被发送到哪个 OBServer。

插入数据:当目标 OBServer 收到数据后,在本地执行 INSERT 操作将数据插入到对应的分区当中。

要从外部文件导入数据,您需要具有 FILE 权限。

命令语法详见:https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/load-data

上传文件至proxy的机器,通过连接proxy执行不可以吗

将文件上传至了observer,执行load data语句,没有报错,但是数据没有写进去呢,请问这是什么情况,是哪里不对呢

load data 我们经常用, 不应该有问题, 你这个给的信息太少了, 你show warning 看一下, 或者给一些observer 的log, 

另外你单独连带数据文件的observer 再试一下

看了下日志报错信息有:Incorrect value和Invalid numeric,但是没有具体显示是哪个字段。文件中有些字段数据是NULL

导入数据跟表的列信息一致么?

是一致的,排查发现是有一列字段类型为datetime,文件中的值为NULL报的错,sql_mode值为“STRICT_ALL_TABLES”

1 个赞