导出到 CSV

AuraDS 中不提供此功能。

此功能处于测试阶段。有关功能层级的更多信息,请参阅 API 层级

我们可以将存储在图目录中的图导出到一组 CSV 文件。图中存在的所有节点、关系和属性都将导出。这包括使用 gds.graph.project 投影的数据和在 mutate 模式下运行算法添加的数据。导出的 CSV 文件的位置可以通过 neo4j.conf 中的配置参数 gds.export.location 进行配置。所有文件都将存储在使用指定导出名称的子文件夹中。如果已存在具有给定导出名称的文件夹,则导出将失败。

此功能必须配置 gds.export.location 参数。

语法

将命名图导出到一组 CSV 文件
CALL gds.graph.export.csv(graphName: String, configuration: Map)
YIELD
    graphName: String,
    exportName: String,
    nodeCount: Integer,
    nodePropertyCount: Integer,
    relationshipCount: Integer,
    relationshipTypeCount: Integer,
    relationshipPropertyCount: Integer,
    writeMillis: Integer
表 1. 参数
名称 类型 可选 描述

graphName

字符串

图在目录中存储的名称。

configuration

映射

配置数据库导出的其他参数。

表 2. 图导出配置
名称 类型 默认值 可选 描述

exportName

字符串

导出图的目录名称。导出的 CSV 文件的绝对路径取决于 neo4j.conf 中的配置参数 gds.export.location

writeConcurrency

整数

4

用于写入数据库的并发线程数。

defaultRelationshipType

字符串

__ALL__

用于 * 关系投影的关系类型。

additionalNodeProperties

字符串、列表或映射

{}

允许从原始图(投影图所基于的图)导出其他节点属性。

useLabelMapping

布尔值

false

决定在导出图时是否使用节点标签映射的标志

表 3. 结果
名称 类型 描述

graphName

字符串

图在目录中存储的名称。

exportName

字符串

导出图的目录名称。

nodeCount

整数

导出的节点数。

nodePropertyCount

整数

导出的节点属性数。

relationshipCount

整数

导出的关系数。

relationshipTypeCount

整数

导出的关系类型数。

relationshipPropertyCount

整数

导出的关系属性数。

writeMillis

整数

将图写入新数据库所花费的毫秒数。

估算

与 GDS 中许多其他过程一样,导出到 csv 具有估算模式。有关更多详细信息,请参阅 内存估算。使用 gds.graph.export.csv.estimate 过程,可以估算导出 CSV 文件所需的磁盘空间。估算使用抽样生成更准确的估算值。

估算将命名图导出到 CSV 文件所需的磁盘空间。
CALL gds.graph.export.csv.estimate(graphName:String, configuration: Map)
YIELD
  nodeCount: Integer,
  relationshipCount: Integer,
  requiredMemory: String,
  treeView: String,
  mapView: Map,
  bytesMin: Integer,
  bytesMax: Integer,
  heapPercentageMin: Float,
  heapPercentageMax: Float;
表 4. 参数
名称 类型 可选 描述

graphName

字符串

图在目录中存储的名称。

configuration

映射

配置数据库导出的其他参数。

表 5. 图导出估算配置
名称 类型 默认值 可选 描述

exportName

字符串

导出 CSV 文件保存到的文件夹名称。

samplingFactor

双精度浮点数

0.001

用于估算的节点和关系的采样比例。

writeConcurrency

整数

4

用于写入数据库的并发线程数。

defaultRelationshipType

字符串

__ALL__

用于 * 关系投影的关系类型。

表 6. 结果
名称 类型 描述

nodeCount

整数

图中节点的数量。

relationshipCount

整数

图中关系的数量。

requiredMemory

字符串

所需内存的估算值,以人类可读的格式表示。

treeView

字符串

所需内存的更详细表示,包括不同组件的估算值,以人类可读的格式表示。

mapView

映射

所需内存的更详细表示,包括不同组件的估算值,以结构化格式表示。

bytesMin

整数

所需的最小字节数。

bytesMax

整数

所需的最大字节数。

heapPercentageMin

浮点数

配置的最大堆所需的最小子集百分比。

heapPercentageMax

浮点数

配置的最大堆所需的最大子集百分比。

导出格式

导出的 CSV 文件的格式基于 Neo4j Admin 导入 命令支持的格式。

GDS 不会在数据中添加节点标签和关系类型的列。为了使用 Neo4j Admin 导入它们,应使用--nodes--relationship 参数设置标签和类型。

更多详细信息:使用相同的每个节点的标签每个关系的类型

节点

节点被导出到按节点标签分组的文件中,即,对于图中存在的每个标签组合,都会创建一个导出文件集。导出文件的命名方案为:nodes_LABELS_INDEX.csv,其中

  • LABELS 是由_连接的标签的有序列表。

  • INDEX 是 0 到并发度之间的数字。

对于每个标签组合,都会创建一个或多个数据文件,因为每个导出线程都会导出到一个单独的文件中。

此外,每个标签组合都会生成一个标题文件,其中包含一行描述数据文件中的列的说明。有关标题文件的更多信息,请参阅此处:CSV 标题格式

例如,一个具有节点组合:A:B:A:B 的图可能会创建以下文件

nodes_A_header.csv
nodes_A_0.csv
nodes_B_header.csv
nodes_B_0.csv
nodes_B_2.csv
nodes_A_B_header.csv
nodes_A_B_0.csv
nodes_A_B_1.csv
nodes_A_B_2.csv

节点标签映射

当配置参数useLabelMapping 设置为 true 时,标签的名称将在导出过程中映射到整数。此映射将写入名为label-mappings.csv 的新文件。当标签名称包含下划线或操作系统文件名禁止使用的特殊字符时,此参数是必需的。

使用上面的示例,如果启用了标签映射,则label-mappings.csv 的内容可能是

index,label
0,A
1,B

在这种情况下,将为节点创建这些文件

nodes_0_header.csv
nodes_0_0.csv
nodes_1_header.csv
nodes_1_0.csv
nodes_1_2.csv
nodes_0_1_header.csv
nodes_0_1_0.csv
nodes_0_1_1.csv
nodes_0_1_2.csv

关系

关系文件的格式类似于节点文件的格式。关系被导出到按关系类型分组的文件中。导出文件的命名方案为:relationships_TYPE_INDEX.csv,其中

  • TYPE 是关系类型

  • INDEX 是 0 到并发度之间的数字。

对于每个关系类型,都会创建一个或多个数据文件,因为每个导出线程都会导出到一个单独的文件中。

此外,每个关系类型都会生成一个标题文件,其中包含一行描述数据文件中的列的说明。

例如,一个具有关系类型:KNOWS:LIVES_IN 的图可能会创建以下文件

relationships_KNOWS_header.csv
relationships_KNOWS_0.csv
relationships_LIVES_IN_header.csv
relationships_LIVES_IN_0.csv
relationships_LIVES_IN_2.csv

示例

将 GDS 中的my-graph 导出到目录my-export
CALL gds.graph.export.csv('my-graph', { exportName: 'my-export' })

带附加节点属性的示例

假设我们在 Neo4j 数据库中有一个图my-db-graph,它具有一个字符串节点属性myproperty,并且我们有一个相应的内存中图名为my-in-memory-graph,它没有myproperty 节点属性。如果我们想导出my-in-memory-graph,但同时还要添加来自my-db-graphmyproperty 属性,我们可以使用additionalProperties 配置参数。

将 GDS 中的my-in-memory-graph 与来自my-db-graphmyproperty 导出到目录my-export
CALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: ['myproperty']})

为了使导出正常工作,原始数据库 (my-db-graph) 在加载我们导出的内存表示 (my-in-memory-graph) 之后不能发生更改。

additionalNodeProperties 参数使用与图项目过程nodeProperties 相同的语法。因此,例如,我们可以为我们的myproperty 定义一个默认值。

将 GDS 中的my-in-memory-graph 与来自my-db-graphmyproperty 以及默认值一起导出到名为my-export 的目录中
CALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })