美文网首页
Nosql-neo4j-Cypher 语句 (6)

Nosql-neo4j-Cypher 语句 (6)

作者: Viterbi | 来源:发表于2022-09-21 09:03 被阅读0次

目录: [TOC]

CALL {} (subquery)

  • 执行子查询并返回结果
  • 子查询必须有RETURN
  • 子查询可以使用范围内变量
  • 子查询不能返回与范围内相同的变量
  • 子查询返回可以在整个访问范围使用
  • Neo4j 4.0后查支持子查询

//使用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

  • 合并多个查询结果
  • 列名和列数要相同才能UNION
  • 保持所有结果使用UNION ALL,UNION会对结果去重

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

USE

  • 指定那个graph将被查询
//语法

USE <graph>
<other clauses>

//例子

USE exampleFabricSetup.exampleDatabaseName
MATCH (n) RETURN n

LOAD CSV

  • 用于导入csv文件
  • FROM后面接着csv的文件路径,用AS指定给变量
  • 可以从HTTPS、HTTP、FTP导入CSV
  • 支持gzip and Deflate,其本地文件支持ZIP压缩
  • 不支持重定向
  • 经常和PERIODIC COMMIT一起使用,提交大量的数据,默认为1000rows提交一次,

加载路径配置

配置文件:

  • dbms.security.allow_csv_import_from_file_urls,允许使用file:///加载文件,默认为TURE
  • dbms.directories.import本地导入的路径,指定本地导入的root目录,默认为安装目录下import
  • 如果要导入本地文件file:///myfile.csv,如果dbms.directories.import是默认import,则neo4j从<NEO4J_HOME>/import/myfile.csv 中加载数据;

CSV文件格式

  • UTF-8格式
  • 行尾是\r或者\r\n
  • 默认分隔符是逗号,可以指定其他分隔符,使用FIELDTERMINATOR 指定其他分隔符
  • CSV中的引号是被允许的,neo4j在读的时候会忽略掉
  • 字符串使用双引号
  • dbms.import.csv.legacy_quote_escaping这个开启,则支持转移字符
//使用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

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

相关文章

  • Nosql-neo4j-Cypher 语句 (6)

    目录:[TOC] CALL {} (subquery) 执行子查询并返回结果 子查询必须有RETURN 子查询可以...

  • Nosql-neo4j-Cypher 语句 概要

    目录:[TOC] 概要 读子句Reading clauses ClauseDescriptionMATCHSpec...

  • Nosql-neo4j-Cypher 语句(2)

    目录:[TOC] MATCH MATCH 指定匹配模式,查询neo4j数据库 MATCH经常和WHERE一块使用 ...

  • Nosql-neo4j-Cypher 语句(3)

    目录:[TOC] RETURN RETURN 可以返回节点,关系及属性 WITH WITH语句允许查询链接在一起,...

  • Nosql-neo4j-Cypher 语句(4)

    目录:[TOC] ORDER BY ORDER BY是RETURN和WITH的子查询,对结果进行排序不能对节点关系...

  • Nosql-neo4j-Cypher 语句 (5)

    目录:[TOC] MERGE MERGE确保模式在graph中存在,要么已经存在要么创建MERGE是MATCH和C...

  • 数据团Python_6. 条件判断及循环语句

    6. 条件判断及循环语句 6.1 什么是语句 6.2 if语句 6.3 for 循环 6.4 while循环 6....

  • 6 if语句

    使用if语句,可以解决很多需要判断决策的问题。 1 简单示例 先来找一个简单的示例了解下Python中的if语句。...

  • sql

    1 .创建表语句 2.查询语句 3.插入语句 更新语句 5 .删除语句 6.WHERE 语句 7 .AND OR...

  • 5.javascript 流程控制语句

    学习要点: 1.语句的定义2.if 语句3.switch 语句4.do...while 语句5.while 语句6...

网友评论

      本文标题:Nosql-neo4j-Cypher 语句 (6)

      本文链接:https://www.haomeiwen.com/subject/nlbdortx.html