知识库

如何正确转义 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[],这是区分大小写的。
© . All rights reserved.