导出到 CSV
AuraDS 中不提供此功能。 |
此功能处于测试阶段。有关功能层级的更多信息,请参阅 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'}}] })