diff --git a/docs-2.0/nebula-importer/use-importer.md b/docs-2.0/nebula-importer/use-importer.md index ad716be2623..b3b5b442b4d 100644 --- a/docs-2.0/nebula-importer/use-importer.md +++ b/docs-2.0/nebula-importer/use-importer.md @@ -1,10 +1,14 @@ # NebulaGraph Importer -NebulaGraph Importer(简称 Importer)是一款 [NebulaGraph](https://github.com/vesoft-inc/nebula) 的 CSV 文件单机导入工具。Importer 可以读取本地的 CSV 文件,然后导入数据至{{nebula.name}}图数据库中。 +NebulaGraph Importer(简称 Importer)是一款{{nebula.name}}的 CSV 文件单机导入工具,可以读取并导入多种数据源的 CSV 文件数据。 -## 适用场景 +## 功能 -Importer 适用于将本地 CSV 文件的内容导入至{{nebula.name}}中。 +- 支持多种数据源,包括本地、S3、OSS、HDFS、FTP、SFTP。 +- 支持导入 CSV 格式文件的数据。单个文件内可以包含多种 Tag、多种 Edge type 或者二者混合的数据。 +- 支持同时连接多个 Graph 服务进行导入并且动态负载均衡。 +- 支持失败后重连、重试。 +- 支持多维度显示统计信息,包括导入时间、导入百分比等。统计信息支持打印在 Console 或日志中。 ## 优势 @@ -28,17 +32,19 @@ Importer 适用于将本地 CSV 文件的内容导入至{{nebula.name}}中。 - [源码编译安装](../4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md) -- {{nebula.name}} 中已创建 Schema,包括图空间、Tag 和 Edge type,或者通过参数`clientSettings.postStart.commands`设置。 - -- 运行 Importer 的机器已部署 Golang 环境。详情请参见 [Golang 环境搭建](https://github.com/vesoft-inc/nebula-importer/blob/{{importer.branch}}/docs/golang-install.md)。 +- {{nebula.name}} 中已创建 Schema,包括图空间、Tag 和 Edge type,或者通过参数`manager.hooks.before.statements`设置。 ## 操作步骤 -配置 yaml 文件并准备好待导入的 CSV 文件,即可使用本工具向{{nebula.name}}批量写入数据。 +准备好待导入的 CSV 文件并配置 yaml 文件,即可使用本工具向{{nebula.name}}批量导入数据。 + +!!! note + + yaml 配置文件说明请参见下文的配置文件说明。 ### 下载二进制包运行 -1. 在[Release](https://github.com/vesoft-inc/nebula-importer/releases/tag/{{importer.tag}})页面下载二进制包,并添加执行权限。 +1. 在[Release](https://github.com/vesoft-inc/nebula-importer/releases/tag/{{importer.tag}})页面下载可执行的二进制包。 2. 启动服务。 @@ -48,6 +54,8 @@ Importer 适用于将本地 CSV 文件的内容导入至{{nebula.name}}中。 ### 源码编译运行 +编译源码需要部署 Golang 环境。详情请参见 [Golang 环境搭建](https://github.com/vesoft-inc/nebula-importer/blob/{{importer.branch}}/docs/golang-install.md)。 + 1. 克隆仓库。 ```bash @@ -56,8 +64,7 @@ Importer 适用于将本地 CSV 文件的内容导入至{{nebula.name}}中。 !!! note - 请使用正确的分支。 - {{nebula.name}} 2.x 和 3.x 的 rpc 协议不同。 + 请使用正确的分支。不同分支的 rpc 协议不同。 2. 进入目录`nebula-importer`。 @@ -74,280 +81,281 @@ Importer 适用于将本地 CSV 文件的内容导入至{{nebula.name}}中。 4. 启动服务。 ```bash - $ ./nebula-importer --config + $ ./bin/nebula-importer --config ``` - !!! note - - yaml 配置文件说明请参见下文的配置文件说明。 - -### 无网络编译方式 - -如果服务器不能联网,建议在能联网的机器上将源码和各种依赖打包上传到对应的服务器上编译即可,操作步骤如下: - -1. 克隆仓库。 - - ```bash - $ git clone -b {{importer.branch}} https://github.com/vesoft-inc/nebula-importer.git - ``` - -2. 使用如下的命令下载并打包依赖的源码。 - - ```bash - $ cd nebula-importer - $ go mod vendor - $ cd .. && tar -zcvf nebula-importer.tar.gz nebula-importer - ``` - -3. 将压缩包上传到不能联网的服务器上。 - -4. 解压并编译。 - - ```bash - $ tar -zxvf nebula-importer.tar.gz - $ cd nebula-importer - $ go build -mod vendor cmd/importer.go - ``` - ### Docker 方式运行 使用 Docker 可以不必在本地安装 Go 语言环境,只需要拉取 NebulaGraph Importer 的[镜像](https://hub.docker.com/r/vesoft/nebula-importer),并将本地配置文件和 CSV 数据文件挂载到容器中。命令如下: ```bash +$ docker pull vesoft/nebula-importer $ docker run --rm -ti \ - --network=host \ - -v : \ - -v : \ - vesoft/nebula-importer: - --config + --network=host \ + -v : \ + -v : \ + vesoft/nebula-importer: + --config ``` -- ``:本地 yaml 配置文件的绝对路径。 -- ``:本地 CSV 数据文件的绝对路径。 -- ``:{{nebula.name}} 3.x 请填写`v3`。 +- ``:yaml 配置文件的绝对路径。 +- ``:数据文件的绝对路径。如果文件不在本地,请忽略该参数。 +- ``:Importer 的版本号,请填写`v3`。 !!! note 建议使用相对路径。如果使用本地绝对路径,请检查路径映射到 Docker 中的路径。 ## 配置文件说明 -NebulaGraph Importer 通过`nebula-importer/examples/v2/example.yaml`配置文件来描述待导入文件信息、{{nebula.name}}服务器信息等。用户可以参考示例配置文件:[无表头配置](config-without-header.md)/[有表头配置](config-with-header.md)。下文将分类介绍配置文件内的字段。 +NebulaGraph Importer 的[Github](https://github.com/vesoft-inc/nebula-ng-tools/tree/{{importer.branch}}/importer/examples)内提供多种示例配置文件。配置文件用来描述待导入文件信息、{{nebula.name}}服务器信息等。下文将分类介绍配置文件内的字段。 !!! note 如果用户下载的是二进制包,请手动创建配置文件。 -### 基本配置 +### Client 配置 + +Client 配置存储客户端连接{{nebula.name}}相关的配置。 示例配置如下: ```yaml -version: v2 -description: example -removeTempFiles: false +client: + version: v3 + address: "192.168.1.100:9669,192.168.1.101:9669" + user: root + password: nebula + concurrencyPerAddress: 10 + reconnectInitialInterval: 1s + retry: 3 + retryInitialInterval: 1s ``` |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`version`|v2|是|配置文件的版本。| -|`description`|example|否|配置文件的描述。| -|`removeTempFiles`|false|否|是否删除临时生成的日志和错误数据文件。| +|`client.version`|`v3`|是|指定连接的{{nebula.name}}的大版本。当前仅支持`v3`。| +|`client.address`|`"127.0.0.1:9669"`|是|指定连接的{{nebula.name}}地址。多个地址用英文逗号(,)分隔。| +|`client.user`|`root`|否|{{nebula.name}}的用户名。| +|`client.password`|`nebula`|否|{{nebula.name}}用户名对应的密码。| +|`client.concurrencyPerAddress`|`10`|否|单个 Graph 服务的客户端并发连接数。| +|`client.retryInitialInterval`|`1s`|否|重连间隔时间。| +|`client.retry`|`3`|否|nGQL 语句执行失败的重试次数。| +|`client.retryInitialInterval`|`1s`|否|重试间隔时间。| -### 客户端配置 +### Manager 配置 -客户端配置存储客户端连接{{nebula.name}}相关的配置。 +Manager 配置是连接数据库后的人为控制配置。 示例配置如下: ```yaml -clientSettings: - retry: 3 - concurrency: 10 - channelBufferSize: 128 - space: test - connection: - user: user - password: password - address: 192.168.11.13:9669,192.168.11.14:9669 - # # 只有 local_config 是 false 的情况下,才可以通过 UPDATE CONFIGS 更新配置 - # postStart: - # commands: | - # UPDATE CONFIGS storage:wal_ttl=3600; - # UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true }; - # afterPeriod: 8s - # preStop: - # commands: | - # UPDATE CONFIGS storage:wal_ttl=86400; - # UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false }; +manager: + spaceName: basic_string_examples + batch: 128 + readerConcurrency: 50 + importerConcurrency: 512 + statsInterval: 10s + hooks: + before: + - statements: + - UPDATE CONFIGS storage:wal_ttl=3600; + - UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true }; + - statements: + - | + DROP SPACE IF EXISTS basic_int_examples; + CREATE SPACE IF NOT EXISTS basic_int_examples(partition_num=5, replica_factor=1, vid_type=int); + USE basic_int_examples; + wait: 10s + after: + - statements: + - | + UPDATE CONFIGS storage:wal_ttl=86400; + UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false }; ``` |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`clientSettings.retry`|3|否|nGQL 语句执行失败的重试次数。| -|`clientSettings.concurrency`|10|否|{{nebula.name}}客户端并发数。| -|`clientSettings.channelBufferSize`|128|否|每个{{nebula.name}}客户端的缓存队列大小。| -|`clientSettings.space`|-|是|指定数据要导入的{{nebula.name}}图空间。不要同时导入多个空间,以免影响性能。| -|`clientSettings.connection.user`|-|是|{{nebula.name}}的用户名。| -|`clientSettings.connection.password`|-|是|{{nebula.name}}用户名对应的密码。| -|`clientSettings.connection.address`|-|是|所有 Graph 服务的地址和端口。| -|`clientSettings.postStart.commands`|-|否|配置连接{{nebula.name}}服务器之后,在插入数据之前执行的一些操作。| -|`clientSettings.postStart.afterPeriod`|-|否|执行上述`commands`命令后到执行插入数据命令之间的间隔,例如`8s`。| -|`clientSettings.preStop.commands`|-|否|配置断开{{nebula.name}}服务器连接之前执行的一些操作。| +|`manager.spaceName`|-|是|指定数据要导入的图空间。不支持同时导入多个图空间。| +|`manager.batch`|`128`|否|执行语句的批处理量(全局配置)。
对某个数据源单独设置批处理量可以使用下文的`sources.batch`。| +|`manager.readerConcurrency`|`50`|否|读取器读取数据源的并发数。| +|`manager.importerConcurrency`|`512`|否|生成待执行的 nGQL 语句的并发数,然后会调用客户端执行这些语句。| +|`manager.statsInterval`|`10s`|否|打印统计信息的时间间隔。| +|`manager.hooks.before.[].statements`|-|否|导入前在图空间内执行的命令。| +|`manager.hooks.before.[].wait`|-|否|执行`statements`语句后的等待时间。| +|`manager.hooks.after.[].statements`|-|否|导入后在图空间内执行的命令。| +|`manager.hooks.after.[].wait`|-|否|执行`statements`语句后的等待时间。| -### 文件配置 +### Log 配置 -文件配置存储数据文件和日志的相关配置,以及 Schema 的具体信息。 - -#### 文件和日志配置 +Log 配置是设置日志相关配置。 示例配置如下: ```yaml -workingDir: ./data/ -logPath: ./err/test.log -files: - - path: ./student.csv - failDataPath: ./err/student - batchSize: 128 - limit: 10 - inOrder: false - type: csv - csv: - withHeader: false - withLabel: false - delimiter: "," - lazyQuotes: false +log: + level: INFO + console: true + files: + - logs/nebula-importer.log ``` |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`workingDir`|-|否|在多个目录包含具有相同文件结构的数据,使用此参数在多个目录之间切换。例如,下面配置的 `path` 和 `failDataPath` 的值会自动更改为 `./data/student` 和 `./data/err/student`。参数可以是绝对的或相对的。| -|`logPath`|-|否|导入过程中的错误等日志信息输出的文件路径。| -|`files.path`|-|是|数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。可以使用星号(\*)进行模糊匹配,导入多个名称相似的文件,但是文件的结构需要相同。| -|`files.failDataPath`|-|是|插入失败的数据文件存放路径,以便后面补写数据。| -|`files.batchSize`|128|否|单批次插入数据的语句数量。| -|`files.limit`|-|否|读取数据的行数限制。| -|`files.inOrder`|-|否|是否按顺序在文件中插入数据行。如果为`false`,可以避免数据倾斜导致的导入速率降低。| -|`files.type`|-|是|文件类型。| -|`files.csv.withHeader`|`false`|是|是否有表头。详情请参见[关于 CSV 文件表头](#csv_header)。| -|`files.csv.withLabel`|`false`|是|是否有 LABEL。详情请参见[有表头配置说明](config-with-header.md)。| -|`files.csv.delimiter`|`","`|是|指定 csv 文件的分隔符。只支持一个字符的字符串分隔符。使用特殊字符做分隔符时需要进行转义。例如当分隔符为十六进制`0x03`即`Ctrl+C`时,转义的写法为:`"\x03"`或`"\u0003"`。关于 yaml 格式特殊字符转义的细节请参见[更多](https://yaml.org/spec/1.2.2/#escaped-characters)。| -|`files.csv.lazyQuotes`|`false`|否|LazyQuotes设置为真时,一个引号可能会出现在非引号字段中,一个非双引号可能会出现在引号字段中。| - -#### Schema 配置 +|`log.level`|`INFO`|否|日志级别。可选值为`DEBUG`、`INFO`、`WARN`、`ERROR`、`PANIC`、`FATAL`。| +|`log.console`|`true`|否|存储日志时是否将日志同步打印到 Console。| +|`log.files`|-|否|日志文件路径。| -Schema 配置描述当前数据文件的 Meta 信息,Schema 的类型分为点和边两类,可以同时配置多个点或边。 +### Source 配置 -- 点配置 +Source 配置中需要配置数据源信息、数据处理方式和 Schema 映射。 示例配置如下: ```yaml -schema: - type: vertex - vertex: - vid: - index: 1 - concatItems: # "c1{index0}c2{index1}2" - - "c1" - - 0 - - c2 - - 1 - - "2" - function: hash - prefix: abc +sources: + - path: ./person.csv # 指定存储数据文件的路径。如果使用相对路径,则路径和当前配置文件目录拼接。也支持通配符文件名,例如:./follower-*.csv,请确保所有匹配的文件具有相同的架构。 +# - s3: # AWS S3 +# endpoint: endpoint # 可选。S3 服务端点,如果使用 AWS S3 可以省略。 +# region: us-east-1 # 必填。S3 服务的区域。 +# bucket: gdelt-open-data # 必填。S3 服务中的 bucket。 +# key: events/20190918.export.csv # 必填。S3 服务中文件的 key。 +# accessKeyID: "" # 可选。S3 服务的访问密钥。如果是公共数据,则无需配置。 +# accessKeySecret: "" # 可选。S3 服务的密钥。如果是公共数据,则无需配置。 +# - oss: +# endpoint: https://oss-cn-hangzhou.aliyuncs.com # 必填。OSS 服务端点。 +# bucket: bucketName # 必填。OSS 服务中的 bucket。 +# key: objectKey # 必填。OSS 服务中文件的 object key。 +# accessKeyID: accessKey # 必填。OSS 服务的访问密钥。 +# accessKeySecret: secretKey # 必填。OSS 服务的秘钥。 +# - ftp: +# host: 192.168.0.10 # 必填。FTP 服务的主机。 +# port: 21 # 必填。FTP 服务的端口。 +# user: user # 必填。FTP 服务的用户名。 +# password: password # 必填。FTP 服务的密码。 +# path: "/events/20190918.export.csv" # FTP 服务中文件的路径。 +# - sftp: +# host: 192.168.0.10 # 必填。SFTP 服务的主机。 +# port: 22 # 必填。SFTP 服务的端口。 +# user: user # 必填。SFTP 服务的用户名。 +# password: password # 可选。SFTP 服务的密码。 +# keyFile: keyFile # 可选。SFTP 服务的 SSH 密钥文件路径。 +# keyData: keyData $ 可选。SFTP 服务的 SSH 密钥文件内容。 +# passphrase: passphrase # 可选。SFTP 服务的 SSH 密钥密码。 +# path: "/events/20190918.export.csv" # 必填。SFTP 服务中文件的路径。 +# - hdfs: +# address: "127.0.0.1:8020" # 必填。HDFS 服务的地址。 +# user: "hdfs" # 可选。HDFS 服务的用户名。 +# path: "/events/20190918.export.csv" # 必填。HDFS 服务中文件的路径。 + batch: 256 + csv: + delimiter: "|" + withHeader: false + lazyQuotes: false tags: - - name: student - props: - - name: age - type: int - index: 2 - - name: name - type: string - index: 1 - - name: gender - type: string - defaultValue: "male" - - name: phone - type: string - nullable: true - - name: email - type: string - nullable: true - nullValue: "__NULL__" - - name: address - type: string - nullable: true - alternativeIndices: - - 7 - - 8 + - name: Person + id: + type: "STRING" + function: "hash" +# index: 0 + concatItems: + - person_ + - 0 + - _id + props: + - name: "firstName" + type: "STRING" + index: 1 + - name: "lastName" + type: "STRING" + index: 2 + - name: "gender" + type: "STRING" + index: 3 + nullable: true + defaultValue: female + - name: "birthday" + type: "DATE" + index: 4 + nullable: true + nullValue: _NULL_ + - name: "creationDate" + type: "DATETIME" + index: 5 + - name: "locationIP" + type: "STRING" + index: 6 + - name: "browserUsed" + type: "STRING" + index: 7 + - path: ./knows.csv + batch: 256 + edges: + - name: KNOWS # person_knows_person + src: + id: + type: "STRING" + concatItems: + - person_ + - 0 + - _id + dst: + id: + type: "STRING" + concatItems: + - person_ + - 1 + - _id + props: + - name: "creationDate" + type: "DATETIME" + index: 2 + nullable: true + nullValue: _NULL_ + defaultValue: 0000-00-00T00:00:00 ``` -|参数|默认值|是否必须|说明| -|:---|:---|:---|:---| -|`files.schema.type`|-|是|Schema 的类型,可选值为`vertex`和`edge`。| -|`files.schema.vertex.vid.index`|-|否|点 ID 对应 CSV 文件中列的序号。| -|`files.schema.vertex.vid.concatItem`|-|否|用于连接两个或多个数组,连接项可以是`string`、`int`或者混合。`string`代表常量,`int`表示索引列。如果设置了`concatItem`,`index`参数将不生效。| -|`files.schema.vertex.vid.function`|-|否|生成 VID 的函数。目前,我们只支持 `hash` 函数。| -|`files.schema.vertex.vid.type`|-|否|点 ID 的数据类型,可选值为`int`和`string`。| -|`files.schema.vertex.vid.prefix`|-|否|给 原始vid 添加的前缀,当同时指定了 `function` 时, 生成 VID 的方法是先添加 `prefix` 前缀, 再用 `function`生成 VID。| -|`files.schema.vertex.tags.name`|-|是|Tag 名称。| -|`files.schema.vertex.tags.props.name`|-|是|Tag 属性名称,必须和{{nebula.name}}中的 Tag 属性一致。| -|`files.schema.vertex.tags.props.type`|-|是|属性数据类型,支持`bool`、 `int`、 `float`、 `double`、 `string`、 `time`、 `timestamp`、 `date`、 `datetime`、 `geography`、 `geography(point)`、 `geography(linestring)` 和 `geography(polygon)`。| -|`files.schema.vertex.tags.props.index`|-|否|属性对应 CSV 文件中列的序号。| -|`files.schema.vertex.tags.props.nullable`|`false`|否|属性是否可以为`NULL`,可选`true`或者`false`。| -|`files.schema.vertex.tags.props.nullValue`|`""`|否|`nullable`设置为`true`时,属性的值与`nullValue`相等则将该属性值设置为`NULL`。| -|`files.schema.vertex.tags.props.alternativeIndices`|-|否|当`nullable`为`false`时忽略。该属性根据索引顺序从 csv 中获取,直到不等于`nullValue`。| -|`files.schema.vertex.tags.props.defaultValue`|-|否当`nullable`为`false`时忽略。根据`index`和`alternativeIndices`获取的所有值为`nullValue`时设置默认值。| - -!!! note - CSV 文件中列的序号从 0 开始,即第一列的序号为 0,第二列的序号为 1。 - -- 边配置 - -示例配置如下: +配置主要包括以下几个部分: -```yaml -schema: - type: edge - edge: - name: follow - srcVID: - index: 0 - function: hash - dstVID: - index: 1 - function: - rank: - index: 2 - props: - - name: grade - type: int - index: 3 -``` +- 指定数据源信息。 +- 指定执行语句的批处理量。 +- 指定 CSV 文件格式信息。 +- 指定 Tag 的模式映射。 +- 指定 Edge type 的模式映射。 |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`files.schema.type`|-|是|Schema 的类型,可选值为`vertex`和`edge`。| -|`files.schema.edge.name`|-|是|Edge type 名称。| -|`files.schema.edge.srcVID.index`|-|否|边的起始点 ID 对应 CSV 文件中列的序号。| -|`files.schema.edge.srcVID.function`|-|否|生成 VID 的函数。目前,我们只支持 `hash` 函数。| -|`files.schema.edge.dstVID.index`|-|否|边的目的点 ID 对应 CSV 文件中列的序号。| -|`files.schema.edge.dstVID.function`|-|否|生成 VID 的函数。目前,我们只支持 `hash` 函数。| -|`files.schema.edge.rank.index`|-|否|边的 rank 值对应 CSV 文件中列的序号。| -|`files.schema.edge.props.name`|-|是|Edge type 属性名称,必须和{{nebula.name}}中的 Edge type 属性一致。| -|`files.schema.edge.props.type`|-|是|属性类型,支持`bool`、`int`、`float`、`double`、`timestamp`、`string`和`geo`。| -|`files.schema.edge.props.index`|-|否|属性对应 CSV 文件中列的序号。| - -## 关于 CSV 文件表头(header) +|`sources.path`
`sources.s3`
`sources.oss`
`sources.ftp`
`sources.sftp`
`sources.hdfs` |-| 否 | 指定数据源信息,例如本地文件、HDFS、S3 等。一个`source`只能配置一种数据源,配置多个数据源请在多个`source`内配置。
不同数据源的配置项说明请参见示例内的注释。 | +|`sources.batch` |`256`| 否 | 导入该数据源时执行语句的批处理量。优先级高于`manager.batch`。 | +|`sources.csv.delimiter` |`,`| 否 | CSV 文件的分隔符。仅支持 1 个字符的字符串分隔符。使用特殊字符做分隔符时需要进行转义。例如当分隔符为十六进制`0x03`即`Ctrl+C`时,转义的写法为:`"\x03"`或`"\u0003"`。关于 yaml 格式特殊字符转义的细节请参见[Escaped Characters](https://yaml.org/spec/1.2.2/#escaped-characters)。| | +|`sources.csv.withHeader` |`false`| 否 | 是否忽略 CSV 文件中的第一条记录。 | +|`sources.csv.lazyQuotes` |`false`| 否 | 是否允许惰性解析引号。如果值为`true`,引号可以出现在非引号字段中,非双引号可以出现在引号字段中,而不会引发解析错误。 | +|`sources.tags.name` |-| 是 | Tag 名称。 | +|`sources.tags.id.type` |`STRING`| 否 | VID 的类型。 | +|`sources.tags.id.function` |-| 否 | 生成 VID 的函数。目前仅支持`hash`。 | +|`sources.tags.id.index` |-| 否 | VID 对应的数据文件中的列号。如果未配置`sources.tags.id.concatItems`,该参数必须配置。 | +|`sources.tags.id.concatItems` |-| 否 | 用于连接两个或多个数组,连接项可以是`string`、`int`或者混合。`string`代表常量,`int`表示索引列。如果设置了该参数,`sources.tags.id.index`参数将不生效。 | +|`sources.tags.ignoreExistedIndex` |`true`| 否 | 是否启用`IGNORE_EXISTED_INDEX`,即插入点后不更新索引。 | +|`sources.tags.props.name` |-| 是 | VID 上的属性名称,必须与数据库中的属性相同。 | +|`sources.tags.props.type` |`STRING`| 否 | VID 上属性的数据类型。目前支持`BOOL`、`INT`、`FLOAT`、`DOUBLE`、`STRING`、`TIME`、`TIMESTAMP`、`DATE`、`DATETIME`、`GEOGRAPHY`、`GEOGRAPHY(POINT)`、`GEOGRAPHY(LINESTRING)`、`GEOGRAPHY(POLYGON)`。 | +|`sources.tags.props.index` |-| 是 | 属性值对应的数据文件中的列号。 | +|`sources.tags.props.nullable` |`false`| 否 | 属性是否可以为`NULL`,可选`true`或者`false`。 | +|`sources.tags.props.nullValue` |-| 否 | `nullable`设置为`true`时,属性的值与`nullValue`相等则将该属性值设置为`NULL`。 | +|`sources.tags.props.alternativeIndices` |-| 否 | 当`nullable`为`false`时忽略。该属性根据索引顺序从文件中获取,直到不等于`nullValue`。 | +|`sources.tags.props.defaultValue` |-| 否 | 当`nullable`为`false`时忽略。根据`index`和`alternativeIndices`获取的所有值为`nullValue`时设置默认值。 | +|`sources.edges.name` |-| 是 | Edge type 名称。 | +|`sources.edges.src.id.type` |`STRING`| 否 | 边上起点 VID 的数据类型。 | +|`sources.edges.src.id.index` |-| 是 | 边上起点 VID 对应的数据文件中的列号。 | +|`sources.edges.dst.id.type` |`STRING`| 否 | 边上终点 VID 的数据类型。 | +|`sources.edges.dst.id.index` |-| 是 | 边上终点 VID 对应的数据文件中的列号。 | +|`sources.edges.rank.index` |-| 否 | 边上 RANK 对应的数据文件中的列号。 | +|`sources.edges.ignoreExistedIndex` |`true`| 否 | 是否启用`IGNORE_EXISTED_INDEX`,即插入点后不更新索引。 | +|`sources.edges.props.name` |-| 是 | 边上属性的名称,必须与数据库中的属性相同。 | +|`sources.edges.props.type` |`STRING`| 否 | 边上属性的数据类型。目前支持`BOOL`、`INT`、`FLOAT`、`DOUBLE`、`STRING`、`TIME`、`TIMESTAMP`、`DATE`、`DATETIME`、`GEOGRAPHY`、`GEOGRAPHY(POINT)`、`GEOGRAPHY(LINESTRING)`、`GEOGRAPHY(POLYGON)`。 | +|`sources.edges.props.index` |-| 是 | 属性值对应的数据文件中的列号。 | +|`sources.edges.props.nullable` |-| 否 | 属性是否可以为`NULL`,可选`true`或者`false`。 | +|`sources.edges.props.nullValue` |-| 否 | `nullable`设置为`true`时,属性的值与`nullValue`相等则将该属性值设置为`NULL`。 | +|`sources.edges.props.defaultValue` |-| 否 | 当`nullable`为`false`时忽略。根据`index`和`alternativeIndices`获取的所有值为`nullValue`时设置默认值。 | -Importer 根据 CSV 文件有无表头,需要对配置文件进行不同的设置,相关示例和说明请参见: - -- [无表头配置说明](config-without-header.md) - -- [有表头配置说明](config-with-header.md) - -## 视频 +!!! note -* [数据库导入工具——NebulaGraph Importer 简介](https://www.bilibili.com/video/BV1ny4y1u7i4)(3 分 09 秒) - + CSV 文件中列的序号从 0 开始,即第一列的序号为 0,第二列的序号为 1。 diff --git a/mkdocs.yml b/mkdocs.yml index 27819100b7a..2c3e4d035c8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -91,6 +91,8 @@ plugins: - nebula-flink/* - CHANGELOG.md # - nebula-cloud/* + - nebula-importer/config-with-header.md + - nebula-importer/config-without-header.md - nebula-cloud.md - nebula-cloud/nebula-cloud-on-azure/* - spark-connector/* @@ -581,10 +583,9 @@ nav: - 导入与导出: - 概述: 20.appendix/write-tools.md - - NebulaGraph Importer: - - 使用 NebulaGraph Importer: nebula-importer/use-importer.md - - 有表头配置说明: nebula-importer/config-with-header.md - - 无表头配置说明: nebula-importer/config-without-header.md + - 使用 NebulaGraph Importer: nebula-importer/use-importer.md +# - 有表头配置说明: nebula-importer/config-with-header.md +# - 无表头配置说明: nebula-importer/config-without-header.md - NebulaGraph Exchange: - 认识 NebulaGraph Exchange: @@ -1057,10 +1058,9 @@ nav: - Dashboard 页面介绍: nebula-dashboard/4.use-dashboard.md - 监控指标说明: nebula-dashboard/6.monitor-parameter.md - - NebulaGraph Importer: - - 使用 NebulaGraph Importer: nebula-importer/use-importer.md - - 有表头配置说明: nebula-importer/config-with-header.md - - 无表头配置说明: nebula-importer/config-without-header.md + - NebulaGraph Importer: nebula-importer/use-importer.md +# - 有表头配置说明: nebula-importer/config-with-header.md +# - 无表头配置说明: nebula-importer/config-without-header.md - NebulaGraph Exchange: - 认识 NebulaGraph Exchange: