通过proxy链接数据库执行load data 报错

【产品名称】oceanbase

【产品版本】3.1.1

【问题描述】文件已上传至每一个observer,通过proxy链接数据库执行load data 报错:ERROR 5010 (21000): Unknown operator, bad internal cmd

您好 关于 

LOAD DATA
 

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

  1. 解析文件:OceanBase 数据库会根据用户输入的文件名,读取文件中的数据,并且根据指定的并行度来决定并行或者串行解析输入文件中的数据。
  2. 分发数据:由于 OceanBase 是分布式数据库,各个分区的数据可能分布在各个不同的 OBServer,
    LOAD DATA
     会对解析出来的数据进行计算,决定数据需要被发送到哪个 OBServer。
  3. 插入数据:当目标 OBServer 收到数据后,在本地执行 
    INSERT
     操作将数据插入到对应的分区当中。

要从外部文件导入数据,您需要具有 

FILE
 权限。

详情 您可以参考下这个

https://www.oceanbase.com/docs/oceanbase-database/oceanbase-database/V3.2.1/load-data

您好,我直接连observer去执行load data是没有问题的,但是通过obproxy连接数据库时就会报上述错误

您好

执行命令 看下呢

您好 您这边的obproxy是单独部署的还是和ob服务放在一起的 

mysql -hip -P2883 -uroot@proxysys machine

load data infile '/mnt/ob/result' replace into table machine_info fields terminated by '\t';

通过obd部署的,obproxy是2台机器,observer是3台机器,这种算是单独部署吗

您好 我这边的单独部署 是 指 obproxy是单独的机器还是和observer放在一台机器上了


哦哦,obproxy和observer不是同一台机器,obproxy是单独的2台机器

您好 root@proxysys是proxy的管控账号,不能用这个账号执行的

目前 OB 的load data 只能在 observer 节点上执行。所以 建议 通过直连 文件所在的observer节点(2881端口) 去 加载数据。

obproxy 之所以不行,因为obproxy会把你的请求路由到后端某个 observer节点(这跟路由策略和会话sql有关),如果不是你放文件的那个节点,这个会报错。此外,obproxy 估计还不支持 load data 这个语法。

请问是因为账号的原因才导致的报错吗

14楼已经回答了你的问题, 不知道你搞定了没有


使用obloader导入csv文件。在社区官网上有使用文档和资源下载。

使用文档:https://open.oceanbase.com/docs/productDocs