知识库

使用 neo4j-import 正确转义输入数据

neo4j-import 用于填充新的空数据库。它不能用于导入到现有数据库中。

使用 neo4j-import 导入数据时,请务必在继续操作之前查看所需的 CSV 文件结构和注意事项。

转义 CSV 中的逗号

这适用于转义您用作逗号替代的任何分隔符(如果指定)。Neo4j 仅支持单字符分隔符。

考虑以下字符串:Use the force, Luke!

如果您想从 CSV 文件导入此字段到 neo4j 中,则必须转义该逗号。标准方法是在字段周围简单地加上引号。neo4j-import 将知道所有未转义引号内的内容都属于同一个字段。

CSV 文件

:ID,:LABEL,movie,line
1,Movie,Star Wars,"Use the force, Luke!"
导入到空数据库
$ neo4j-import --into data/graph.db.1 --nodes simple_escape_test.csv
使用 Cypher 验证
neo4j> match (n:Movie) return n.line;
+------------------------+
| n.line                 |
+------------------------+
| "Use the force, Luke!" |
+------------------------+
1 row

现在,如果我们想在一个电影节点中包含多个数组行呢?

转义 CSV 中的数组分隔符

考虑以下数组:{[Use the force, Luke!], [Help me, Obi-Wan Kenobi; you’re my only hope.]}

如果您想从 CSV 文件将此数组导入到 neo4j 中的节点属性中,则必须选择一个在数组中不存在的单字符分隔符。默认值为分号字符。但是,这在我们的示例中不起作用!我们可以轻松地用类似管道(|)字符替换它,但是如果您的数据中可能存在这些字符,则需要找到更模糊的字符,例如 §。

CSV 文件
:ID,:LABEL,movie,lines:string[]
1,Movie,Star Wars,"Use the force, Luke!§Help me, Obi-Wan Kenobi; you're my only hope."
使用 Cypher 验证
neo4j> match (n:Movie) return n;
+-----------------------------------------------------------------------------------------------------------+
| n                                                                                                         |
+-----------------------------------------------------------------------------------------------------------+
| Node[0]{movie:"Star Wars",lines:["Use the force, Luke!","Help me, Obi-Wan Kenobi; you're my only hope."]} |
+-----------------------------------------------------------------------------------------------------------+
1 row
字符串数组列的标题需要使用 :string[],区分大小写。