neo4j數據導入解決方案


一、neo4j數據導入方法

neo4j數據導入有兩種方法,第一種是使用cypher語法中的LOAD CSV,第二種是使用neo4j自帶的工具neo4j-admin import。

LOAD CSV

導入的文件必須是csv文件,位置可以是本地的,或通過http、https、ftp等url指定位置。

neo4j中關於導入文件的設置是dbms.security.allow_csv_import_from_file_urls,默認為true;而導入本地文件的位置通過dbms.directories.import來指定導入的根目錄,然后再使用file:///來表示絕對路徑。

示例一:不帶header,用下標來索引

給定artists.csv文件

1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

 輸入語句:

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

示例二:帶header,用關鍵字來索引

給定artists-with-headers.csv文件

Id,Name,Year
1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

然后執行cypher語句:

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

示例三:大csv文件分批導入

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

這里默認1000行提交一次,也可以人為指定,比如using periodic commit 500.

額外提示:如果值中包含引號,可以用""來表示".

可以發現使用load csv只能導入結點,如果還想導入關系數據,就只能靠neo4j自帶的import工具了。

neo4j-admin import

使用neo4j-admin import工具只能往空數據庫中導入數據,且csv文件必須在import目錄下。使用csv文件導入數據時,每個結點都必須有一個唯一的ID類屬性,但是最好不要起名為ID,這會和數據庫本身維護的ID字段沖突。

二、neo4j導入實例

1、本次的數據集為Movielens的數據集,下載地址:
http://grouplens.org/datasets/movielens/

2、在neo4j安裝根路徑下找到import之后在此文件夾下放入數據。

3、在neo4j中導入數據並創建節點,因數據量過大,使用USING PERIODIC COMMIT 1000,防止數據過大溢出,with headers可以處理含有頭文件的數據。

USING PERIODIC COMMIT 1000
load csv with headers from "file:///ratings.csv" as link
with link       
create(:Ratings{userId:link.userId,movieId:link.movieId,rating:link.rating,
timestamp:link.timestamp
})

 速度還是蠻快的!!!

同上,導入users和movies數據

4、創建節點之間的關系

LOAD CSV WITH HEADERS FROM "file:///ratings.csv" AS row
MATCH (m:Movies), (u:Users)
WHERE u.userId = row.userId AND m.movieId = row.movieId
CREATE (u)-[r:rating{value:row.rating}]->(m)

5、如何快速刪除Neo4j中數量級較大的數據(該方法是清楚數據庫中所有的數據):

1.關閉Neo4j服務器進程:
  命令:neo4j stop

2.刪除graph.db數據庫文件:
  找到<NEO4J_HOME>/data/databases/路徑,可以看到graph.db文件夾。刪除此文件夾即可。

3.重新啟動Neo4j服務器:
  通過bin目錄下執行如下命令啟動Neo4j:/neo4j console

導入csv數據時,如何將屬性的String類型轉換成int類型:

//導入節點 電影類型  == 注意類型轉換
LOAD CSV WITH HEADERS  FROM "file:///genre.csv" AS line MERGE (p:Genre{gid:toInteger(line.gid),name:line.gname})

 

參考文獻:如何將大規模數據導入Neo4j

     neo4j 大量數據的批量導入

     neo4j的linux上安裝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM