2017-02-03 18 views
0

から複数のファイルをアップロードし、私は次のクエリを使用してCSVファイルからのNeo4jにデータをロードしています:サイファーでのバッチ処理やのNeo4jブラウザ

CREATE CONSTRAINT ON (e:Entity) ASSERT e.entity IS UNIQUE; 

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM 'file:/file1.csv' AS line FIELDTERMINATOR '|' 

WITH line 

MERGE (e0:Entity {entity: line.entities_0_entity}) 
ON CREATE SET e0.confidence = toFloat(line.entities_0_confidence) 

MERGE (e1:Entity {entity: line.entities_1_entity}) 
ON CREATE SET e1.confidence = toFloat(line.entities_1_confidence) 

MERGE (e0)-[r:REL {name: line.relation_relation, confidence: toFloat(line.relation_confidence)}]->(e1) 

RETURN * 

誰のNeo4jコマンドラインや道からデータをロードする同等の問合せを言うことができますブラウザでファイル名を動的に変更するか、 "file:/ file *"のように渡します。

答えて

2

同じCypherステートメントを複数回処理し、毎回1つ以上の値を調整する場合は、APOCプロシージャapoc.periodic.iterateを使用できます。

例では、CREATE CONSTRAINTステートメントをあらかじめ(1回だけ)実行したいとします。例えば

は:(手順のparallelオプションはデフォルトでfalseであることから、順次)

CALL apoc.periodic.iterate(
    " 
    WITH ['file1', 'x', 'y'] AS filenames, 
    UNWIND filenames AS name 
    RETURN name; 
    ", 
    " 
    USING PERIODIC COMMIT 1000 
    LOAD CSV WITH HEADERS FROM 'file:/' + {name} + '.csv' AS line FIELDTERMINATOR '|' 
    WITH line 
    MERGE (e0:Entity {entity: line.entities_0_entity}) 
    ON CREATE SET e0.confidence = toFloat(line.entities_0_confidence) 
    MERGE (e1:Entity {entity: line.entities_1_entity}) 
    ON CREATE SET e1.confidence = toFloat(line.entities_1_confidence) 
    MERGE (e0)-[r:REL {name: line.relation_relation, confidence: toFloat(line.relation_confidence)}]->(e1); 
    ", 
    {}); 

このクエリでは、文字列のいずれか(「FILE1」を渡し、LOAD CSVの文を3回実行されます、 "y"、 "z")をnameというパラメータで指定します。

0

あなたは、単にのNeo4jのインポートディレクトリにあるすべてのファイルを配置し、それらすべてをロードするためにbashスクリプトを使用することができます。

#!bin/sh 

for file in /Users/ikwattro/dev/_graphs/310/import/* 
do 
    curl -H "Content-Type: application/json" \ 
     -d '{"statements": [{"statement": "LOAD CSV WITH HEADERS FROM file:///$file AS row ..."}]' \ 
     http://localhost:7474/db/data/transaction/commit 
done 

をインポートする複数のファイルを指定するためのNeo4j自体には、標準的な方法はありません。