importer时导入多个列格式不一样的点csv

在使用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_uid_tid_rel_0628

# 是否删除临时生成的日志和错误数据文件。
removeTempFiles: false

clientSettings:

  # nGQL语句执行失败的重试次数。
  retry: 1

  # Nebula Graph客户端并发数。设置为 CPU 核数
  concurrency: 24

  # 每个Nebula Graph客户端的缓存队列大小。
  channelBufferSize: 2560

  # 指定数据要导入的Nebula Graph图空间。
  space: uid_sim_0628

  # 连接信息。
  connection:
    user: root
    password: nebula
    address: 10.10.185.30:9669

  postStart:
    # 配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。
    commands: |
      DROP SPACE IF EXISTS uid_sim_0628;
      CREATE SPACE IF NOT EXISTS uid_sim_0628(partition_num=15, replica_factor=1, vid_type=INT) ";
      USE uid_sim_0628;
      CREATE TAG uid(mcn int);
      CREATE TAG blk_uid(flag int);
      CREATE TAG wt_uid(flag int);
      CREATE EDGE follow(tidList string,sim_cos_dacay1 float,sim_jac_dacay1 float,sim_jac float,uid_tid_node_cnt int,uid_tid_cnt_start int,uid_tid_cnt_end int);

    # 执行上述命令后到执行插入数据命令之间的间隔。
    afterPeriod: 15s

  preStop:
    # 配置断开Nebula Graph服务器连接之前执行的一些操作。
    commands: |

# 错误等日志信息输出的文件路径。    
logPath: ./err/test3output.log

# 1.CSV文件相关设置。
files:

    # 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。
  - path: ./data/data_uid_mcn0_blk0_wt0.csv

    # 插入失败的数据文件存放路径,以便后面补写数据。
    failDataPath: ./err/data_uid_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_uid_mcn0_blk0_wt1.csv

    # 插入失败的数据文件存放路径,以便后面补写数据。
    failDataPath: ./err/data_uid_err.csv

    # 单批次插入数据的语句数量。
    batchSize: 1000

    # 读取数据的行数限制。
    #limit: 1000

    # 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。
    inOrder: false

    # 文件类型,当前仅支持csv。
    type: csv

    csv:
      # 是否有表头。
      withHeader: true

      # 是否有LABEL。
      withLabel: false

      # 指定csv文件的分隔符。只支持一个字符的字符串分隔符。
      delimiter: ","

三个csv的格式如下:

./data/data_uid_mcn0_blk0_wt0.csv格式:

./data/data_uid_mcn0_blk0_wt1.csv格式:

./data/data_uid_mcn0_blkb_wt_.csv格式:

导入语句:

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

1 个赞

我的理解是你导入的时候要告诉程序,我这个 csv 是什么 schema 的

1 个赞

问题解决了,感谢!

浙ICP备20010487号