neo4j-admin工具导入教程
关于本模块
您刚刚学习了如何使用 Cypher 和 APOC 将数据导入图表。APOC 为您提供了更多的导入功能。将数据导入图表的另一种方法是使用管理工具neo4j-admin
. 接下来,您将学习如何使用neo4j-admin
CSV 文件创建图表。您将使用代表犯罪的更大数据集的数据。
在本模块结束时,您将能够:
-
neo4j-admin
使用该工具从一组 CSV 文件中导入数据。
是什么neo4j-admin
?
neo4j-admin 是一个只有在您管理的系统上使用 Neo4j Desktop 或 Neo4j Server 时才能使用的工具。您不能neo4j-admin 在基于云的 Neo4j DBMS 中使用,例如 Neo4j Sandbox 或 Neo4j Aura。 |
Neo4j 安装包括一个bin文件夹,其中包含一些可供开发人员和管理员使用的有用实用程序。这些包括:
-
neo4j,用于启动、停止和检查 Neo4j 实例的状态。
-
cypher-shell,一个命令行版本的 Cypher 界面,使您能够执行 Cypher 语句。
-
neo4j-admin,用于许多管理活动,包括从 CSV 文件创建数据库。
在本课中,您将学习如何使用neo4j-admin
. neo4j-admin
当您有大量数据要导入时,例如超过 10M 的节点,您可以使用它来导入。
您会将数据加载到比您一直使用的数据库大得多的犯罪数据库中。
准备进口
正如您在使用 Cypher 导入 CSV 文件时熟悉它们的内容一样,您必须对将使用 .csv 导入的 CSV 数据执行相同的操作neo4j-admin
。您必须了解标头与数据的关系、字段分隔符是什么,并确保数据是属性格式的。与使用 Cypher 导入数据不同,您无法在导入期间灵活地转换数据。您必须确保 CSV 文件中的数据干净并准备好导入。
使用 neo4j-admin 进行导入时,与使用 Cypher 导入有区别:
-
要导入的数据库不能存在,因为它将作为导入的一部分创建。
-
标头信息具有用于创建节点和关系的附加信息。
-
节点 CSV 文件的结构不同于关系 CSV 文件。
-
所有 CSV 文件必须使用相同的字段分隔符。
-
您在导入后创建约束(和索引)。
CSV 文件
CSV 文件的格式很重要:
-
对于节点和关系,标题信息必须与数据相关联。
-
标头信息包含唯一标识记录的 ID、可选节点标签或关系类型以及表示导入数据的属性的名称。
-
CSV 可以有标题行,或者您可以将标题信息放在单独的文件中。
节点的 CSV 文件:Beat
这是beats.csv文件的一部分,其中包含用于加载Beats类型的节点的嵌入标头信息:
id:ID(beat-ref),:LABEL
1132,Beat
0813,Beat
0513,Beat
beats.csv记录表示将加载到标签为Beat的节点中的数据。id值用于为节点创建id属性。ID(beat-ref) 用于存储对创建的节点的引用,以便稍后在导入时使用。
节点的 CSV 文件:犯罪
以下是用于加载Crime类型节点的crime_header.csv头文件示例:
id:ID(crime-ref),:LABEL,date,description
下面是相关的crime.csv文件的一部分,用于加载犯罪类型的节点:
8920441,Crime,12/07/2012 07:50:00 AM,AUTOMOBILE
4730813,Crime,05/09/2006 08:20:00 AM,POCKET-PICKING
7150780,Crime,09/28/2009 01:00:00 AM,CHILD ABANDONMENT
4556970,Crime,12/16/2005 08:39:24 PM,POSS: CANNABIS 30GMS OR LESS
9442492,Crime,12/28/2013 12:15:00 PM,OVER $500
id值用于为节点创建id属性。该节点的标签将是Crime。日期和描述值用于为每个节点创建各自的属性。ID(crime-ref) 用于存储对创建的节点的引用,以便稍后在导入时使用。
节点的 CSV 文件:PrimaryType
这是用于加载这些节点的primaryTypes.csv文件的一部分:
id:ID(primarytype-ref)
ARSON
OBSCENITY
ROBBERY
THEFT
CRIM SEXUAL ASSAULT
BURGLARY
id值用于为节点创建id属性。用于创建节点的标签未在标头或数据中指定,因此需要在我们的参数中指定才能执行导入。
关系的 CSV 文件
用于加载关系的 CSV 文件为每个关系都包含一行,其中指定了开始和结束节点的 ID 以及关系类型。
以下是crimeBeats.csv文件的一部分,将用于在Crime和Beat节点之间创建:ON_BEAT关系:
:START_ID(crime-ref),:END_ID(beat-ref),:TYPE
6978096,0911,ON_BEAT
3170923,2511,ON_BEAT
3073515,1012,ON_BEAT
8157905,0113,ON_BEAT
当导入工具处理此文件时,它已经保存了对先前创建的犯罪和节拍节点的引用。我们使用:TYPE列指定要在犯罪和节拍节点之间创建的关系,在本例中为ON_BEAT。
以下是crimePrimaryTypes.csv文件的一部分,该文件将用于创建犯罪节点和包含犯罪类型数据的节点之间的关系:
:START_ID(crime-ref),:END_ID(primarytype-ref)
5221115,NARCOTICS
4522835,DECEPTIVE PRACTICE
3432518,BATTERY
6439993,CRIMINAL TRESPASS
当导入工具处理这个文件时,它已经保存了对之前创建的Crime和PrimaryType节点的引用。数据中没有指定关系,因此我们需要在导入数据时在参数中指定它。
此文件中未指定关系:TYPE,因此当您从该文件加载数据时,它将在参数中指定。
导入数据
在您为数据创建或获取 CSV 文件后,您可以导入数据。数据导入会创建一个数据库,因此您指定的数据库必须为空或不存在。
以下是从 CSV 文件创建数据库的简化语法:
neo4j-admin import
--database <database-name>
--nodes [<rheader-csv-file-1>,]<csv-file-1>
--nodes=<Label>=[<rheader-csv-file-2>,]<csv-file-2>
--relationships [<jheader-csv-file-1>,]<join-csv-file-1>
--relationships=<REL_TYPE>=[<jheader-csv-file-2>,]<join-csv-file-2>
--trim-strings=true
> import.out
此简化语法显示了为节点 CSV 文件指定标签以及为关系 CSV 文件指定关系类型的示例。导入的数据。
用 CSV 文件指定头文件时,“,”后面不能有 空格。 |
有关使用导入工具的详细信息,您可以参考文档。请注意,可以为导入时指定的文件指定正则表达式。