在使用importer工具导入有表头的点csv文件时,能否导入多个点csv文件,并且多个csv文件的列不同(这里存在一个点对应多个TAG的情况)?
importer对应的yaml(包括space中的各个TAG格式),csv文件的格式 均在下面的回复中有给出。
此外:
Nebula 版本为2.5.0
系统为Linux Centos7.6
在使用importer工具导入有表头的点csv文件时,能否导入多个点csv文件,并且多个csv文件的列不同(这里存在一个点对应多个TAG的情况)?
importer对应的yaml(包括space中的各个TAG格式),csv文件的格式 均在下面的回复中有给出。
此外:
Nebula 版本为2.5.0
系统为Linux Centos7.6
点 vid 不同的情况下,是可以的
点VID是不同的,我想问下yaml文件的格式该如何编辑,这是我的格式:
# 连接的Nebula Graph版本,连接2.x时设置为v2。
version: v2
description: import_user_device_rel_0628
# 是否删除临时生成的日志和错误数据文件。
removeTempFiles: false
clientSettings:
# nGQL语句执行失败的重试次数。
retry: 1
# Nebula Graph客户端并发数。设置为 CPU 核数
concurrency: 24
# 每个Nebula Graph客户端的缓存队列大小。
channelBufferSize: 2560
# 指定数据要导入的Nebula Graph图空间。
space: user_sim_0628
# 连接信息。
connection:
user: root
password: nebula
address: 10.10.185.30:9669
postStart:
# 配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。
commands: |
DROP SPACE IF EXISTS user_sim_0628;
CREATE SPACE IF NOT EXISTS user_sim_0628(partition_num=15, replica_factor=1, vid_type=INT) ";
USE user_sim_0628;
CREATE TAG user(mcn int);
CREATE TAG blk_user(flag int);
CREATE TAG wt_user(flag int);
CREATE EDGE follow(deviceList string,sim_cos_dacay1 float,sim_jac_dacay1 float,sim_jac float,user_device_node_cnt int,user_device_cnt_start int,user_device_cnt_end int);
# 执行上述命令后到执行插入数据命令之间的间隔。
afterPeriod: 15s
preStop:
# 配置断开Nebula Graph服务器连接之前执行的一些操作。
commands: |
# 错误等日志信息输出的文件路径。
logPath: ./err/test3output.log
# 1.CSV文件相关设置。
files:
# 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。
- path: ./data/data_user_mcn0_blk0_wt0.csv
# 插入失败的数据文件存放路径,以便后面补写数据。
failDataPath: ./err/data_user_err.csv
# 单批次插入数据的语句数量。
batchSize: 1000
# 读取数据的行数限制。
#limit: 1000
# 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。
inOrder: false
# 文件类型,当前仅支持csv。
type: csv
csv:
# 是否有表头。
withHeader: true
# 是否有LABEL。
withLabel: false
# 指定csv文件的分隔符。只支持一个字符的字符串分隔符。
delimiter: ","
# 2.CSV文件相关设置。
files:
# 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。
- path: ./data/data_user_mcn0_blk0_wt1.csv
# 插入失败的数据文件存放路径,以便后面补写数据。
failDataPath: ./err/data_user_err.csv
# 单批次插入数据的语句数量。
batchSize: 1000
# 读取数据的行数限制。
#limit: 1000
# 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。
inOrder: false
# 文件类型,当前仅支持csv。
type: csv
csv:
# 是否有表头。
withHeader: true
# 是否有LABEL。
withLabel: false
# 指定csv文件的分隔符。只支持一个字符的字符串分隔符。
delimiter: ","
导入语句:
nebula-importer --config test.yaml &>test.log &
test.log内容如下:
2021/09/10 16:46:41 — START OF NEBULA IMPORTER —
2021/09/10 16:46:41 [INFO] config.go:380: find file: /data1/idata/uid_tid_rel/data/data_uid_mcn0_blkb_wt_.csv
2021/09/10 16:46:41 Please configure file schema: files[0].schema
2021/09/10 16:46:42 — END OF NEBULA IMPORTER —
我理解是让指定schema,但是schema不是在表头中都已经指明了吗? 这里一个csv对应多个TAG
按照 example 的格式,path 下面也是需要设置 schema 的 https://github.com/vesoft-inc/nebula-importer/blob/master/examples/v2/example.yaml
我的理解是你导入的时候要告诉程序,我这个 csv 是什么 schema 的
问题解决了,感谢!