导出为 CSV
| 此功能在 AuraDS 中不可用。 |
|
在 Aura 图分析中,此功能仅可通过 Python 客户端使用。它目前无法作为 Cypher 过程或函数使用。 |
此功能处于 Beta 测试阶段。有关功能分级的更多信息,请参阅 API 分级。
我们可以将图目录中存储的图导出为一组 CSV 文件。图中存在的所有节点、关系和属性都会被导出。这包括通过 gds.graph.project 投影的数据,以及通过在 mutate 模式下运行算法所添加的数据。导出 CSV 文件的位置可以通过 neo4j.conf 中的配置参数 gds.export.location 进行配置。所有文件都将存储在指定导出名称的子文件夹中。如果给定的导出名称对应的文件夹已存在,导出将会失败。
|
此功能必须配置 |
语法
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
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储时所使用的名称。 |
配置 |
Map |
否 |
用于配置数据库导出的其他参数。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
exportName |
字符串 |
|
否 |
导出图的目录名称。导出 CSV 文件的绝对路径取决于 |
writeConcurrency |
整数 |
|
是 |
用于写入数据库的并发线程数。 |
defaultRelationshipType |
字符串 |
|
是 |
用于 |
additionalNodeProperties |
字符串、列表或映射 |
|
是 |
允许从支持投影图的原始图中导出额外的节点属性。 |
useLabelMapping |
布尔值 |
|
是 |
导出图时是否使用节点标签映射的标志 |
| 名称 | 类型 | 描述 |
|---|---|---|
graphName |
字符串 |
图在目录中存储时所使用的名称。 |
exportName |
字符串 |
导出图的目录名称。 |
nodeCount |
整数 |
已导出的节点数量。 |
nodePropertyCount |
整数 |
已导出的节点属性数量。 |
relationshipCount |
整数 |
已导出的关系数量。 |
relationshipTypeCount |
整数 |
已导出的关系类型数量。 |
relationshipPropertyCount |
整数 |
已导出的关系属性数量。 |
writeMillis |
整数 |
将图写入新数据库所花费的毫秒数。 |
估算
与 GDS 中的许多其他过程一样,导出到 CSV 也具有估算模式。有关更多详细信息,请参阅 内存估算。使用 gds.graph.export.csv.estimate 过程,可以估算导出 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;
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储时所使用的名称。 |
配置 |
Map |
否 |
用于配置数据库导出的其他参数。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
exportName |
字符串 |
|
否 |
导出图的目录名称。导出 CSV 文件的绝对路径取决于 |
writeConcurrency |
整数 |
|
是 |
用于写入数据库的并发线程数。 |
defaultRelationshipType |
字符串 |
|
是 |
用于 |
additionalNodeProperties |
字符串、列表或映射 |
|
是 |
允许从支持投影图的原始图中导出额外的节点属性。 |
useLabelMapping |
布尔值 |
|
是 |
导出图时是否使用节点标签映射的标志 |
| 名称 | 类型 | 描述 |
|---|---|---|
|
整数 |
图中的节点数。 |
|
整数 |
图中的关系总数。 |
|
字符串 |
以人类可读格式表示的所需内存估算值。 |
|
字符串 |
所需内存的更详细表示,包括以人类可读格式对不同组件的估算。 |
|
Map |
所需内存的更详细表示,包括以结构化格式对不同组件的估算。 |
|
整数 |
所需的最少字节数。 |
|
整数 |
所需的最大字节数。 |
|
浮点数 |
所需配置最大堆的最小百分比。 |
|
浮点数 |
所需配置最大堆的最大百分比。 |
导出格式
导出的 CSV 文件格式基于 Neo4j Admin import 命令支持的格式。
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
示例
my-graph 从 GDS 导出到目录 my-exportCALL 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 配置参数。
my-in-memory-graph 从 GDS 导出,并从 my-db-graph 获取 myproperty 到目录 my-exportCALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: ['myproperty']})
|
原始数据库 ( |
additionalNodeProperties 参数使用与 图投影过程 的 nodeProperties 相同的语法。因此,例如,我们可以为 myproperty 定义一个默认值。
my-in-memory-graph 从 GDS 导出,从 my-db-graph 获取 myproperty 并设置默认值到目录 my-exportCALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })