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字段沖突。