
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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会被忽略,以表头定义为准。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务