CSV文件导入示例

以下示例将指导您使用 Nebula Importer 将 CSV 数据导入到 Nebula Graph 中。在此示例中,Nebula Graph 通过 DockerDocker Compose 安装。

启动 Nebula Graph 服务

您可以按照以下步骤启动 Nebula Graph 服务:

  1. 在命令行界面上,进入 nebula-docker-compose 目录。
  2. 执行以下命令以启动 Nebula Graph 服务:
$ sudo docker-compose up -d
  1. 执行以下命令把 Nebula Graph 镜像文件下拉到本地:
$ sudo docker pull vesoft/nebula-console:nightly
  1. 执行以下命令连接 Nebula Graph:
$ sudo docker run --rm -ti --network=host vesoft/nebula-console:nightly --addr=127.0.0.1 --port=3699

注意:您必须确保 IP 地址和端口号配置正确。

创建点和边的 Schema

在输入 schema 之前,必须创建一个空间并使用它。在此示例中,创建一个 nba 空间并使用它。

使用以下命令创建两个标签和两个边类型:

nebula> CREATE TAG player (name string, age int);

nebula> CREATE TAG team (name string);

nebula> CREATE EDGE serve (start_year int, end_year int);

nebula> CREATE EDGE follow (degree int);

准备配置文件

您必须配置 .yaml 配置文件,该文件规定了 CSV 文件中数据的格式。在本例中,我们创建一个名为 config.yaml 的配置文件。

在此示例中,我们按以下方式配置 config.yaml 文件:

version: v1rc1
description: example
clientSettings:
  concurrency: 2 # number of graph clients
  channelBufferSize: 50
  space: nba
  connection:
    user: user
    password: password
    address: 127.0.0.1:3699
logPath: ./err/test.log
files:
  - path: /home/nebula/serve.csv
    failDataPath: ./err/serve.csv
    batchSize: 10
    type: csv
    csv:
      withHeader: false
      withLabel: false
    schema:
      type: edge
      edge:
        name: serve
        withRanking: false
        props:
          - name: start_year
            type: int
          - name: end_year
            type: int
  - path: /home/nebula/follow.csv
    failDataPath: ./err/follow.csv
    batchSize: 10
    type: csv
    csv:
      withHeader: false
      withLabel: false
    schema:
      type: edge
      edge:
        name: follow
        withRanking: false
        props:
          - name: degree
            type: int
  - path: /home/nebula/player.csv
    failDataPath: ./err/player.csv
    batchSize: 10
    type: csv
    csv:
      withHeader: false
      withLabel: false
    schema:
      type: vertex
      vertex:
        tags:
          - name: player
            props:
              - name: name
                type: string
              - name: age
                type: int
  - path: /home/nebula/team.csv
    failDataPath: ./err/team.csv
    batchSize: 10
    type: csv
    csv:
      withHeader: false
      withLabel: false
    schema:
      type: vertex
      vertex:
        tags:
          - name: team
            props:
              - name: name
                type: string

注意

  • 在上面的配置文件中,您必须将 IP 地址和端口号更改为您自己的 IP 地址和端口号。
  • 您必须将 CSV 文件的目录更改为您自己的目录,否则,Nebula Importer 无法找到 CSV 文件。

准备 CSV 数据

在此示例中,我们准备了四个 CSV 数据文件:player.csvteam.csvserve.csv 以及 follow.csv

serve.csv 文件中的数据如下:

100,200,1997,2016
101,201,1999,2018
102,203,2006,2015
102,204,2015,2019
103,204,2017,2019
104,200,2007,2009

follow.csv 文件中的数据如下:

100,101,95
100,102,90
101,100,95
102,101,75
102,100,75
103,102,70
104,101,50
104,105,60
105,104,83

player.csv 文件中的数据如下:

100,Tim Duncan,42
101,Tony Parker,36
102,LaMarcus Aldridge,33
103,Rudy Gay,32
104,Marco Belinelli,32
105,Danny Green,31
106,Kyle Anderson,25
107,Aron Baynes,32
108,Boris Diaw,36

team.csv 文件中的数据如下:

200,Warriors
201,Nuggets
202,Rockets
203,Trail
204,Spurs
205,Thunders
206,Jazz
207,Clippers
208,Kings

注意

  • servefollow CSV 文件中,第一列是起始点 ID、第二列是目标点 ID,其他列与config.yaml文件一致。
  • playerteam CSV 文件中,第一列是点 ID,其他列与 config.yaml 文件一致。

导入 CSV 数据

完成上述所有四个步骤后,您可以使用 DockerGo 导入 CSV 数据。

使用 Go-importer 导入 CSV 数据

在使用 Go-importer 导入 CSV 数据之前,必须确保已安装 Go 并配置了 Go 的环境变量。

您可以通过以下步骤导入 CSV 数据:

  1. 通过以下命令将当前目录更改为 import.go 文件所在的目录:
$ cd /home/nebula/nebula-importer/cmd
  1. 执行以下命令导入 CSV 数据:
$ go run importer.go --config /home/nebula/config.yaml

注意:您必须将 import.go 文件的目录和 config.yaml 文件的目录更改为您自己的目录,否则,导入操作可能会失败。

使用 Docker 导入 CSV 数据

在使用 Docker 导入 CSV 数据之前,必须确保 Docker 已启动并运行正常。

您可以通过以下命令使用 Docker 导入 CSV 数据:

$ sudo docker run --rm -ti --network=host \
-v /home/nebula/config.yaml:/home/nebula/config.yaml \
-v /home/nebula/:/home/nebula/ vesoft/nebula-importer \
--config /home/nebula/config.yaml

注意:您必须将 config.yaml 文件的目录更改为您自己的目录,否则导入操作可能会失败。