有表头配置说明

对于有表头(header)的CSV文件,需要在配置文件里设置withHeadertrue,表示CSV文件中第一行为表头,表头内容具有特殊含义。

Caution

如果CSV文件中含有header,Importer就会按照header来解析每行数据的Schema,并忽略yaml文件中的点或边设置。

示例文件

有表头的CSV文件示例如下:

  • 点示例

    student_with_header.csv的示例数据:

    1. :VID(string),student.name:string,student.age:int,student.gender:string
    2. student100,Monica,16,female
    3. student101,Mike,18,male
    4. student102,Jane,17,female

    第一列为点ID,后面三列为属性nameagegender

  • 边示例

    follow_with_header.csv的示例数据:

    1. :SRC_VID(string),:DST_VID(string),:RANK,follow.degree:double
    2. student100,student101,0,92.5
    3. student101,student100,1,85.6
    4. student101,student102,2,93.2
    5. student100,student102,1,96.2

    前两列的数据分别为起始点ID和目的点ID,第三列为rank,第四列为属性degree

表头格式说明

表头通过一些关键词定义起始点、目的点、rank以及一些特殊功能,说明如下:

  • :VID(必填):点ID。需要用:VID(type)形式设置数据类型,例如:VID(string):VID(int)

  • :SRC_VID(必填):边的起始点ID。需要用:SRC_VID(type)形式设置数据类型。

  • :DST_VID(必填):边的目的点ID。需要用:DST_VID(type)形式设置数据类型。

  • :RANK(可选):边的rank值。

  • :IGNORE(可选):插入数据时忽略这一列。

  • :LABEL(可选):表示对该行进行插入(+)或删除(-)操作。必须为第一列。例如:

    1. :LABEL,
    2. +,
    3. -,

Note

除了:LABEL列之外的所有列都可以按任何顺序排序,因此针对较大的CSV文件,用户可以灵活地设置header来选择需要的列。

对于Tag或Edge type的属性,格式为<tag_name/edge_name>.<prop_name>:<prop_type>,说明如下:

  • <tag_name/edge_name>:Tag或者Edge type的名称。

  • <prop_name>:属性名称。

  • <prop_type>:属性类型。支持boolintfloatdoubletimestampstring,默认为string

例如student.name:stringfollow.degree:double

配置示例

  1. # 连接的Nebula Graph版本,连接2.x时设置为v2。
  2. version: v2
  3. description: example
  4. # 是否删除临时生成的日志和错误数据文件。
  5. removeTempFiles: false
  6. clientSettings:
  7. # nGQL语句执行失败的重试次数。
  8. retry: 3
  9. # Nebula Graph客户端并发数。
  10. concurrency: 10
  11. # 每个Nebula Graph客户端的缓存队列大小。
  12. channelBufferSize: 128
  13. # 指定数据要导入的Nebula Graph图空间。
  14. space: student
  15. # 连接信息。
  16. connection:
  17. user: root
  18. password: nebula
  19. address: 192.168.11.13:9669
  20. postStart:
  21. # 配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。
  22. commands: |
  23. DROP SPACE IF EXISTS student;
  24. CREATE SPACE IF NOT EXISTS student(partition_num=5, replica_factor=1, vid_type=FIXED_STRING(20));
  25. USE student;
  26. CREATE TAG student(name string, age int,gender string);
  27. CREATE EDGE follow(degree int);
  28. # 执行上述命令后到执行插入数据命令之间的间隔。
  29. afterPeriod: 15s
  30. preStop:
  31. # 配置断开Nebula Graph服务器连接之前执行的一些操作。
  32. commands: |
  33. # 错误等日志信息输出的文件路径。
  34. logPath: ./err/test.log
  35. # CSV文件相关设置。
  36. files:
  37. # 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。
  38. - path: ./student_with_header.csv
  39. # 插入失败的数据文件存放路径,以便后面补写数据。
  40. failDataPath: ./err/studenterr.csv
  41. # 单批次插入数据的语句数量。
  42. batchSize: 10
  43. # 读取数据的行数限制。
  44. limit: 10
  45. # 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。
  46. inOrder: true
  47. # 文件类型,当前仅支持csv。
  48. type: csv
  49. csv:
  50. # 是否有表头。
  51. withHeader: true
  52. # 是否有LABEL。
  53. withLabel: false
  54. # 指定csv文件的分隔符。只支持一个字符的字符串分隔符。
  55. delimiter: ","
  56. schema:
  57. # Schema的类型,可选值为vertex和edge。
  58. type: vertex
  59. # 本示例第二个数据文件为边的数据。
  60. - path: ./follow_with_header.csv
  61. failDataPath: ./err/followerr.csv
  62. batchSize: 10
  63. limit: 10
  64. inOrder: true
  65. type: csv
  66. csv:
  67. withHeader: true
  68. withLabel: false
  69. schema:
  70. # Schema的类型为edge。
  71. type: edge
  72. edge:
  73. # Edge type名称。
  74. name: follow
  75. # 是否包含rank。
  76. withRanking: true

Note

点ID的数据类型需要和clientSettings.postStart.commands中的创建图空间语句的数据类型一致。


最后更新: June 23, 2021