知识库

正确转义 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[],并且区分大小写。
© . This site is unofficial and not affiliated with Neo4j, Inc.