neo4j-admin工具导入教程

来源:https://neo4j.com/graphacademy/training-importing-data-40/04-import-40-using-neo4j-admin-tool-import/

关于本模块

您刚刚学习了如何使用 Cypher 和 APOC 将数据导入图表。APOC 为您提供了更多的导入功能。将数据导入图表的另一种方法是使用管理工具neo4j-admin接下来,您将学习如何使用neo4j-adminCSV 文件创建图表。您将使用代表犯罪的更大数据集的数据。

在本模块结束时,您将能够:

  • 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-adminneo4j-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类型的节点的嵌入标头信息

CSV
id:ID(beat-ref),:LABEL
1132,Beat
0813,Beat
0513,Beat

beats.csv记录表示将加载到标签为Beat的节点中的数据id值用于为节点创建id属性ID(beat-ref) 用于存储对创建的节点的引用,以便稍后在导入时使用。

节点的 CSV 文件:犯罪

以下是用于加载Crime类型节点的crime_header.csv头文件示例

CSV
id:ID(crime-ref),:LABEL,date,description

下面是相关的crime.csv文件的一部分,用于加载犯罪类型的节点:

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文件的一部分:

CSV
id:ID(primarytype-ref)
ARSON
OBSCENITY
ROBBERY
THEFT
CRIM SEXUAL ASSAULT
BURGLARY

id值用于为节点创建id属性用于创建节点的标签未在标头或数据中指定,因此需要在我们的参数中指定才能执行导入。

关系的 CSV 文件

用于加载关系的 CSV 文件为每个关系都包含一行,其中指定了开始和结束节点的 ID 以及关系类型。

以下是crimeBeats.csv文件的一部分,将用于在CrimeBeat节点之间创建:ON_BEAT关系:

CSV
: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文件的一部分,该文件将用于创建犯罪节点和包含犯罪类型数据的节点之间的关系:

CSV
:START_ID(crime-ref),:END_ID(primarytype-ref)
5221115,NARCOTICS
4522835,DECEPTIVE PRACTICE
3432518,BATTERY
6439993,CRIMINAL TRESPASS

当导入工具处理这个文件时,它已经保存了对之前创建的CrimePrimaryType节点的引用。数据中没有指定关系,因此我们需要在导入数据时在参数中指定它。

此文件中未指定关系: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 文件指定头文件时,“,”后面不能有 空格

有关使用导入工具的详细信息,您可以参考文档。请注意,可以为导入时指定的文件指定正则表达式。

posted @ 2022-06-04 20:42  博二爷  阅读(808)  评论(0编辑  收藏  举报