obloader 为何无法导入 dbgen 生成的 csv 文件

4.2.2

数据文件是 dbgen 生成的

我的命令行如下:
./obloader -h ob4-peer -P 2883 -u root@test -D test --csv --table ‘xxx’ -f /go/feedback/test.xxx.1.csv


麻烦把这两个文件发出来看一下

这2个文件在哪个目录下生成啊

在{ob-loader-dumper}/logs/

我又试了下 反正就是没导入数据 也没报错 好奇怪

2个问题
命令1 报错
./obloader -h ob4-peer -P 2883 -u root@test -D test --csv --table ‘xxx’ -f /go/feedback/test.xxx.1.csv

指定文件导入的时候我发现 insert_date 和 updated 数据文件里没有的,但是在 ob后台 insert 这2列了的,所以报错了吧?没有值不是应该插入控制或者直接插入 当前 CURRENT_TIMESTAMP 吗?为什么报错啊

inserted_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

命令2 没报错
./obloader -h ob4-peer -P 2883 -u root@test --sys-user root --sys-password 12345678 -D test --csv --table ‘xxx’ -f /go/data1/chat --direct --rpc-port 2885
但是没有导入任务数据

第一个问题:可以用 --auto-column-mapping 这个参数试试
第二个问题:obloader导入的时候需要把csv文件和表对应起来,这个对应关系是靠文件名来完成的。如果文件名和表名不匹配就会导致该问题

第一个命令行加上 --auto-column-mapping 还是报错的

表结构
| xxx | CREATE TABLE xxx (
id binary(16) NOT NULL,
feedback_type enum(‘GOOD’,‘BAD’) COLLATE utf8mb4_bin NOT NULL,
feedback_tag text COLLATE utf8mb4_bin DEFAULT NULL,
description mediumtext COLLATE utf8mb4_bin DEFAULT NULL,
inserted_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 |
数据文件命名也是 test.xxx.1.csv

第一个问题使用–exclude-column-names col1,col2 把多出来两个列过滤掉试试
第二个需要修改一下文件名
–table abcd 那么对应的表名就需要是abcd.csv ,把test去掉改为 xxxx.1.csv

命令1 导入失败 这是个枚举类型的数据


在数据文件中张这样

除去枚举的数据后,数据导入没问题。

导入数据有问题唉


而数据文件里

为什么枚举类型的数据插入会有问题呢

建议先检查下数据feedback_type这一列的数据类型好像不匹配。
导入乱码建议查一下两边字符集是否一致呢

插入 “good” 会有问题吗?还是只能插入 good or ‘good’

我是 dbgen 生成的数据,如何保证字符集编码一致呀老师,导入可太麻烦了。。。。

dbgen这边没用过:cold_sweat:,这个工具生成数据时候应该可以选择字符集的吧?

mysql -h ob4-peer -P 2883 -u root@test -D test -e ‘select * from xxx’ > a.csv
./obloader -h ob4-peer -P 2883 -u root@test -D test --csv --table ‘xxx’ -f ./a.csv

insert 进去的数据 导入出来, obloader 一样报错

到出来的数据 编码应该一致吧

使用CSV格式默认的定界符是单引号,如果要导入定界符为双引号的数据需要增加 --column-delimiter ‘"’


https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000001953286


这个是我 insert 进去 再导出的 没有 ‘’ ""的问题依然报错