如何正确转义 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[] ,这是区分大小写的。 |
此页面有帮助吗?