导出为 CSV
此功能在 AuraDS 中不可用。 |
此功能在 Aura Graph Analytics Serverless 中不可用。 |
此功能处于 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 |
字符串 |
否 |
图在目录中存储的名称。 |
configuration |
映射 |
否 |
配置数据库导出的额外参数。 |
名称 | 类型 | 默认值 | 可选 | 描述 |
---|---|---|---|---|
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 |
字符串 |
否 |
图在目录中存储的名称。 |
configuration |
映射 |
否 |
配置数据库导出的额外参数。 |
名称 | 类型 | 默认值 | 可选 | 描述 |
---|---|---|---|---|
exportName |
字符串 |
|
否 |
导出 CSV 文件保存的文件夹名称。 |
samplingFactor |
双精度浮点数 |
|
是 |
用于估算的节点和关系的采样比例。 |
writeConcurrency |
整数 |
|
是 |
用于写入数据库的并发线程数。 |
defaultRelationshipType |
字符串 |
|
是 |
用于 |
名称 | 类型 | 描述 |
---|---|---|
|
整数 |
图中的节点数量。 |
|
整数 |
图中的关系数量。 |
|
字符串 |
所需内存的估算值(人类可读格式)。 |
|
字符串 |
所需内存的更详细表示,包括不同组件的估算值(人类可读格式)。 |
|
映射 |
所需内存的更详细表示,包括不同组件的估算值(结构化格式)。 |
|
整数 |
所需字节的最小值。 |
|
整数 |
所需字节的最大值。 |
|
浮点数 |
配置的最大堆内存所需的最小百分比。 |
|
浮点数 |
配置的最大堆内存所需的最大百分比。 |
导出格式
导出的 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
示例
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
配置参数。
my-in-memory-graph
与 my-db-graph
中的 myproperty
一起导出到目录 my-export
CALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: ['myproperty']})
为了导出正确进行,原始数据库( |
additionalNodeProperties
参数使用与 图投影过程的 nodeProperties
相同的语法。因此,例如,我们可以为 myproperty
定义一个默认值。
my-in-memory-graph
与 my-db-graph
中的 myproperty
(带默认值)一起导出到名为 my-export
的目录中CALL gds.graph.export.csv('my-graph', { exportName: 'my-export', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })