导出为 CSV

此功能在 AuraDS 中不可用。

此功能在 Aura Graph Analytics Serverless 中不可用。

此功能处于 Beta 阶段。有关功能阶段的更多信息,请参阅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-graph 中添加 myproperty 属性,我们可以使用 additionalProperties 配置参数。

将 GDS 中的 my-in-memory-graphmy-db-graph 中的 myproperty 一起导出到目录 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-graphmy-db-graph 中的 myproperty(带默认值)一起导出到名为 my-export 的目录中
CALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })
© . All rights reserved.