文章目錄
-
- neo4j如何導入csv檔案
- neo4j的查詢
- Java查詢
neo4j如何導入csv檔案
以下示範的是帶檔案頭的csv檔案
1.把全部的csv檔案導入到機器的/import檔案夾内
2.執行導入語句可以不設定路徑
Windows在bin目錄的同級目錄import
Linux在/var/lib/neo4j/import
--導入節點
LOAD CSV WITH HEADERS FROM "file:///person.csv" AS line CREATE(n:Person{id:line.personId,name:line.name})
--導入關系
--支援 toInt(),toFloat()函數
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line
match (from{personId:line.targetId}),(to{personId:line.sourceId})
merge (from)-[r:關系{sourceId:line.sourceId,targetId:line.targetId,關系類型:line.關系類型,借債金額:toFloat(line.借債金額),借債時間:toInt(line.借債時間)}]->(to)
--給關系屬性加新資料
match ()-[r]-() set r.開始時間 = toInt('20180101')
neo4j還支援很多的函數,可以查詢官方的API
neo4j的查詢
--最短路徑查詢{路徑中不支援定義查詢次元}
MATCH (n),(m) ,p=allShortestPaths((n)-[*]-(m)) where id(n)=91 and id(m)=42 RETURN p
--定義路徑查詢,存在即傳回值,否則不傳回
MATCH (n),(m) ,p=(n)-[r*..3]-(m) where id(n)=91 and id(m)=42 RETURN p
--關系篩選[以頂點xxxx開始,3度以内的全部關系滿足才會傳回資料]
MATCH p=(n)-[r*..3]-() where n.name = 'xxxx'
and all( x in relationships(p) where x.xxx = xxx)
return p
以上的關系篩選,基本可以滿足屬性篩選過濾的需求,并且傳回值是無孤立點
Java查詢
public class CypherNeo4jOperation {
private final static Logger logger = LoggerFactory.getLogger(CypherNeo4jOperation.class);
// NEo4j driver properties
private String URI;
private String USER;
private String PASSWORD;
private Driver driver;
private static Session session;
private StatementResult result;
private static volatile CypherNeo4jOperation instance = null;
public static Session getSession() {
return CypherNeo4jOperation.session;
}
public CypherNeo4jOperation() {
}
/**
* @param
* @return
*/
public CypherNeo4jOperation(String uri, String user, String password) {
this.URI = uri.trim();
this.USER = user.trim();
this.PASSWORD = password.trim();
this.driver = GraphDatabase.driver(URI, AuthTokens.basic(USER, PASSWORD));
this.session = driver.session();
}
/**
* @param
* @return
*/
public synchronized static final CypherNeo4jOperation getInstance(String bolt, String username, String password) {
if (instance == null) {
// 加鎖
synchronized (CypherNeo4jOperation.class) {
// 這一次判斷也是必須的,不然會有并發問題
if (instance == null) {
instance = new CypherNeo4jOperation(bolt, username, password);
}
}
}
logger.info("Neo4j status " + instance.toString());
return instance;
}
/**
* @param cypher neo4j查詢語句
* @return String
* @Description: (傳回查詢結束的結果)
*/
public String cypherJson(String cypher) {
logger.info(cypher);
StatementResult result = session.run(cypher);
}