Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 在cypher中批处理或从Neo4j浏览器上载多个文件_Command Line_Neo4j_Cypher_Load Csv - Fatal编程技术网

Command line 在cypher中批处理或从Neo4j浏览器上载多个文件

Command line 在cypher中批处理或从Neo4j浏览器上载多个文件,command-line,neo4j,cypher,load-csv,Command Line,Neo4j,Cypher,Load Csv,我使用以下查询将数据从csv加载到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

我使用以下查询将数据从csv加载到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*”那样传递它吗

您只需将所有文件放在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本身没有标准方法指定要导入的多个文件。

您只需将所有文件放在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本身没有标准方法指定要导入的多个文件。

如果要多次处理同一个Cypher语句,每次调整一个或多个值,可以使用APOC过程

在您的示例中,您希望预先执行
CREATE CONSTRAINT
语句(并且只执行一次)

例如:

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);
  ",
  {});

此查询将执行
LOAD CSV
语句3次(顺序执行,因为过程的
parallel
选项默认为
false
),每次传递一个字符串(“file1”、“y”和“z”)作为
name
参数。

如果要多次处理同一个Cypher语句,每次调整一个或多个值时,可以使用APOC程序

在您的示例中,您希望预先执行
CREATE CONSTRAINT
语句(并且只执行一次)

例如:

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);
  ",
  {});
此查询将执行
LOAD CSV
语句3次(顺序执行,因为过程的
parallel
选项默认为
false
),每次将其中一个字符串(“file1”、“y”和“z”)作为
名称
参数传递