
Nebula Importer是专为https://github.com/vesoft-inc/nebula%E8%AE%BE%E8%AE%A1%E7%9A%84CSV%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%85%A5%E5%B7%A5%E5%85%B7%E3%80%82%E5%AE%83%E8%83%BD%E5%A4%9F%E8%AF%BB%E5%8F%96%E6%9C%AC%E5%9C%B0CSV%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8C%E5%B9%B6%E6%89%B9%E9%87%8F%E5%AF%BC%E5%85%A5%E5%88%B0Nebula Graph数据库中。
使用前需确保:
无需本地安装Go环境,直接拉取镜像并挂载配置文件和CSV数据目录即可使用。
基本命令
bashdocker run --rm -ti \ --network=host \ -v {本地配置文件绝对路径}:{容器内配置文件路径} \ -v {本地CSV数据目录绝对路径}:{容器内CSV数据目录路径} \ vesoft/nebula-importer:{镜像版本} \ --config {容器内配置文件路径}
参数说明
--network=host:使用主机网络,确保容器能访问Nebula Graph服务-v {本地配置文件}:{容器内配置文件}:挂载本地YAML配置文件到容器-v {本地CSV数据目录}:{容器内CSV数据目录}:挂载本地CSV数据目录到容器{镜像版本}:指定镜像版本,如v3(对应Nebula Graph 3.x)--config:指定容器内配置文件路径示例
假设本地配置文件路径为/data/nebula/importer/config.yaml,CSV数据目录为/data/nebula/csv,使用v3版本镜像:
bashdocker run --rm -ti \ --network=host \ -v /data/nebula/importer/config.yaml:/config.yaml \ -v /data/nebula/csv:/csv \ vesoft/nebula-importer:v3 \ --config /config.yaml
注意:配置文件中
files.path建议使用相对路径,若使用绝对路径需确保与容器内挂载路径一致。
Nebula Importer通过YAML配置文件定义导入规则,包含全局设置、Nebula Graph连接信息、CSV文件信息和数据schema等。
yamlversion: v2 description: 示例配置 removeTempFiles: false clientSettings: # Nebula Graph客户端配置 files: # CSV文件列表配置
| 参数 | 说明 | 是否必填 | 默认值 |
|---|---|---|---|
| version | 配置文件版本,支持v2(兼容Nebula 2.x和3.x) | 是 | v2 |
| description | 配置文件描述 | 否 | - |
| removeTempFiles | 是否删除临时日志和错误数据文件 | 否 | false |
yamlclientSettings: retry: 3 # 失败重试次数 concurrency: 10 # 并发连接数 channelBufferSize: 128 # 每个客户端的缓存队列大小 space: test # 目标space名称 connection: user: user # 用户名 password: password # 密码 address: 192.168.8.1:9669,192.168.8.2:9669 # Nebula Graph地址列表 postStart: # 连接后、导入前执行的命令 commands: | UPDATE CONFIGS storage:wal_ttl=3600; afterPeriod: 8s # 命令执行后等待时间 preStop: # 断开连接前执行的命令 commands: | UPDATE CONFIGS storage:wal_ttl=86400;
| 参数 | 说明 | 是否必填 | 默认值 |
|---|---|---|---|
| retry | 执行nGQL查询失败的重试次数 | 否 | 3 |
| concurrency | 客户端并发连接数 | 否 | 10 |
| channelBufferSize | 缓存队列大小 | 否 | 128 |
| space | 目标space名称(不支持同时导入多个space) | 是 | - |
| connection.user | Nebula Graph用户名 | 是 | - |
| connection.password | Nebula Graph密码 | 是 | - |
| connection.address | Nebula Graph地址,多个地址用逗号分隔 | 是 | - |
| postStart | 连接后执行的命令及等待时间 | 否 | - |
| preStop | 断开前执行的命令 | 否 | - |
yamlworkingDir: ./data/ # 工作目录,用于拼接相对路径 logPath: ./err/test.log # 日志路径 files: - path: ./student.csv # CSV文件路径(支持通配符,如./follower-*.csv) failDataPath: ./err/student # 失败数据存储目录 batchSize: 128 # 批量插入大小 limit: 10 # 最大读取行数限制 inOrder: false # 是否按文件顺序导入 type: csv # 文件类型(仅支持csv) csv: withHeader: false # 是否带表头 withLabel: false # 是否带标签(+/-表示插入/删除) delimiter: "," # 分隔符(仅支持单个字符) lazyQuotes: false # 是否允许非标准引号
| 参数 | 说明 | 是否必填 | 默认值 |
|---|---|---|---|
| workingDir | 工作目录,用于拼接相对路径 | 否 | 当前目录 |
| logPath | 日志文件路径 | 否 | /tmp/nebula-importer-{timestamp}.log |
| files | CSV文件配置列表 | 是 | - |
| files[].path | CSV文件路径(支持相对路径和通配符) | 是 | - |
| files[].failDataPath | 失败数据存储目录 | 是 | - |
| files[].batchSize | 批量插入大小 | 否 | 128 |
| files[].limit | 最大读取行数 | 否 | 无限制 |
| files[].inOrder | 是否按顺序导入(可能影响性能) | 否 | false |
| files[].type | 文件类型 | 是 | csv |
| files[].csv.withHeader | 是否带表头 | 否 | false |
| files[].csv.withLabel | 是否带标签列 | 否 | false |
| files[].csv.delimiter | 分隔符 | 否 | , |
| files[].csv.lazyQuotes | 是否允许非标准引号 | 否 | false |
必填,描述CSV文件的数据结构,分为顶点(vertex)和边(edge)两种类型。
顶点配置示例
yamlschema: type: vertex vertex: vid: index: 1 # CSV列索引(从0开始) function: hash # VID生成函数(仅支持hash) prefix: abc # VID前缀 tags: - name: student # tag名称 props: - name: age # 属性名 type: int # 属性类型 index: 2 # CSV列索引 - name: name type: string index: 1 - name: gender type: string defaultValue: "male" # 默认值 - name: phone type: string nullable: true # 是否允许为NULL - name: email type: string nullable: true nullValue: "__NULL__" # NULL值标识 - name: address type: string nullable: true alternativeIndices: [7, 8] # 备选列索引
边配置示例
yamlschema: type: edge edge: name: choose # edge type名称 srcVID: # 源顶点VID配置 index: 0 function: hash dstVID: # 目标顶点VID配置 index: 1 function: hash rank: # 边的rank配置 index: 2 props: # 边属性配置 - name: grade type: int index: 3
VID配置参数
| 参数 | 说明 | 是否必填 | 默认值 |
|---|---|---|---|
| index | CSV列索引(从0开始) | 否 | 0 |
| concatItems | 拼接项(字符串为常量,数字为列索引),优先级高于index | 否 | - |
| function | VID生成函数(仅支持hash) | 否 | - |
| type | VID类型 | 否 | string |
| prefix | VID前缀(应用于原始VID,在function之前) | 否 | - |
属性配置参数
| 参数 | 说明 | 是否必填 | 默认值 |
|---|---|---|---|
| name | 属性名(需与Nebula Graph中定义一致) | 是 | - |
| type | 属性类型(支持bool、int、float、string等) | 否 | string |
| index | CSV列索引 | 否 | - |
| nullable | 是否允许为NULL | 否 | false |
| nullValue | NULL值标识(nullable为true时生效) | 否 | "" |
| alternativeIndices | 备选列索引(按顺序取非nullValue值) | 否 | - |
| defaultValue | 默认值(当所有索引列均为nullValue时使用) | 否 | - |
顶点文件示例(tag: course)
csv101,Math,3,No5 102,English,6,No11
vertex.tags.props顺序排列的属性边文件示例(edge type: choose)
csv200,101,5 200,102,3
表头格式:<tag/edge名称>.<属性名>:<类型>,支持特殊关键字:
:VID:顶点ID:SRC_VID:源顶点ID:DST_VID:目标顶点ID:RANK:边的rank:IGNORE:忽略该列:LABEL:操作标签(+插入/-删除)顶点文件示例
csv:LABEL,:VID,course.name,building.name:string,:IGNORE,course.credits:int +,"hash(""Math"")",Math,No5,1,3 +,"hash(""English"")",English,"No11 B\",2,6
边文件示例
csv:DST_VID,follow.likeness:double,:SRC_VID,:RANK 201,92.5,200,0 200,85.6,201,1
注意:带表头时,配置文件中的
props会被忽略,以表头定义为准。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务