apoc.load.directory
过程 Apoc 扩展
apoc.load.directory('pattern', 'urlDir', {config}) YIELD value - 加载参数 urlDir 指定的文件夹中满足给定模式的所有文件列表。如果未指定参数 urlDir 或为空,则加载导入文件夹的文件。
签名
apoc.load.directory(pattern = * :: STRING?, urlDir = :: STRING?, config = {} :: MAP?) :: (value :: STRING?)
配置参数
该过程支持以下配置参数
| 名称 (name) | type | 默认 | description(描述) |
|---|---|---|---|
recursive |
boolean |
true |
查找当前文件夹及其子文件夹中的所有文件 |
用法示例
给定配置
apoc.import.file.use_neo4j_config=true
以及 import 目录下的以下文件
| fileName | path |
|---|---|
db.json |
/ |
1.csv |
/ |
3.csv |
/ |
4.csv |
/ |
8.xls |
/ |
11.txt |
/ |
5.csv |
subfolder1 |
6.xls |
subfolder1 |
7.xls |
subfolder1 |
20.xls |
subfolder1/foo |
2.csv |
subfolder2 |
9.xls |
subfolder2 |
10.txt |
subfolder2 |
查询语句
CALL apoc.load.directory();
将得到以下输出
| 值 |
|---|
"4.csv" |
"1.csv" |
"db.json" |
"3.csv" |
"subfolder2/10.txt" |
"subfolder2/2.csv" |
"subfolder2/9.xls" |
"11.txt" |
"8.xls" |
"subfolder1/5.csv" |
"subfolder1/.DS_Store" |
"subfolder1/7.xls" |
"subfolder1/foo/20.xls" |
"subfolder1/6.xls" |
我们可以设置文件模式,例如搜索以 .csv 结尾的文件
CALL apoc.load.directory("*.csv");
| 值 |
|---|
"4.csv" |
"1.csv" |
"3.csv" |
"subfolder2/2.csv" |
"subfolder1/5.csv" |
我们还可以设置路径,例如仅搜索 subfolder1 及其子文件夹中的文件
CALL apoc.load.directory("*.csv", "subfolder1");
| 值 |
|---|
"subfolder1/5.csv" |
可以将搜索限制在单个文件夹内,而不遍历任何子文件夹
CALL apoc.load.directory("*", "subfolder2", {recursive: false});
| 值 |
|---|
"subfolder2/10.txt" |
"subfolder2/2.csv" |
"subfolder2/9.xls" |
如果设置 apoc.import.file.use_neo4j_config=false,则可以使用绝对路径进行搜索
CALL apoc.load.directory('*', 'file:///Users/username/Downloads', {recursive: false});
我们可以将此过程与其他过程串联,例如使用 apoc.load.csv 来获取多个结果的聚合。假设我们有以下 2 个文件
name,age Selma,8 Rana,11 Selina,18
以及
name,beverage Selma,Soda Rana,Tea|Milk Selina,Cola
因此我们可以执行此查询
CALL apoc.load.directory('*.csv')
YIELD value WITH value as url ORDER BY url DESC
CALL apoc.load.csv(url, {results:['map']}) YIELD map RETURN map
得到以下结果
| Map |
|---|
{ "name": "Selma", "age": "8" } |
{ "name": "Rana", "age": "11" } |
{ "name": "Selina", "age": "18" } |
{ "name": "Selma", "beverage": "Soda" } |
{ "name": "Rana", "beverage": "Tea|Milk" } |
{ "name": "Selina", "beverage": "Cola" } |