Nosql-neo4j-Cypher 语句 (6)

2022-09-21  本文已影响0人  Viterbi

目录: [TOC]

CALL {} (subquery)

//使用WITH导入外层变量
// 子查询的WITH只能使用简单的
// WITH要在子查询第一行,如果第一行是USE,可以在第二行
UNWIND [0, 1, 2] AS x
CALL {
  WITH x
  RETURN x * 10 AS y
}
RETURN x, y


//子查询使用聚合函数
MATCH (p:Person)
CALL {
  WITH p
  MATCH (other:Person) WHERE other.age < p.age
  RETURN count(other) AS youngerPersonsCount
}
RETURN p.name, youngerPersonsCount

CALL procedure

调用存储过程
每一个存储过程都需要输入参数
大部分存储过程返回一定数量的结果流,YIELD可以明确指定需要返回的变量,每一个返回 变量都可以起别名;
YIELD和WHERE结合可以对结果进行过滤; neo4j支持空的存储过程,

//调用一个内置的存储过程,查看database中所有的标签
CALL db.labels

//查看存储过程的特征,指定返回变量
CALL dbms.procedures() YIELD name, signature
WHERE name='dbms.listConfig'
RETURN signature

//带参数的存储过程
CALL dbms.security.createUser('johnsmith', 'h6u4%kr', FALSE )
//使用存储过程的默认参数
CALL dbms.security.createUser('johnsmith', 'h6u4%kr')


//查询标签的数量
CALL db.labels() YIELD label
RETURN count(label) AS numLabels

//过滤返回的结果
CALL db.labels() YIELD label
WHERE label CONTAINS 'User'
RETURN count(label) AS numLabels

//重命名返回的变量名
CALL db.propertyKeys() YIELD propertyKey AS prop
MATCH (n)
WHERE n[prop] IS NOT NULL RETURN prop, count(n) AS numNodes

UNION

MATCH (n:Actor)
RETURN n.name AS name
UNION ALL MATCH (n:Movie)
RETURN n.title AS name

USE

//语法

USE <graph>
<other clauses>

//例子

USE exampleFabricSetup.exampleDatabaseName
MATCH (n) RETURN n

LOAD CSV

加载路径配置

配置文件:

CSV文件格式

//使用LOAD CSV导入数据
artists.csv. 
1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})


//使用LOAD CSV导入带表头的数据
artists-with-headers.csv. Id,Name,Year
1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

LOAD CSV WITH HEADERS FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists-with-headers.csv' AS line
CREATE (:Artist { name: line.Name, year: toInteger(line.Year)})

//使用LOAD CSV导入,指定分隔符
artists-fieldterminator.csv. 1;ABBA;1992
2;Roxette;1986
3;Europe;1979
4;The Cardigans;1992

LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists-fieldterminator.csv' AS line FIELDTERMINATOR ';'
CREATE (:Artist { name: line[1], year: toInteger(line[2])})

//使用LOAD CSV导入大批量数据,默认为1000行提交一次
USING PERIODIC COMMIT
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})

//指定提交的行数
USING PERIODIC COMMIT 500
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})


//zhuanyi字符
artists-with-escaped-char.csv. 
"1","The ""Symbol""","1992"
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists-with-escaped-char.csv' AS line
CREATE (a:Artist { name: line[1], year: toInteger(line[2])})
RETURN a.name AS name, a.year AS year, size(a.name) AS size

//获取导入数据的行数linenumber()
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists.csv' AS line
RETURN linenumber() AS number, line

//获取导入文件的绝对路径
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/4.1/csv/artists.csv' AS line
RETURN DISTINCT file() AS path

本文使用 文章同步助手 同步

上一篇 下一篇

猜你喜欢

热点阅读