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
使用java将数据从Neo4j导出到csv_Neo4j - Fatal编程技术网

使用java将数据从Neo4j导出到csv

使用java将数据从Neo4j导出到csv,neo4j,Neo4j,将数据从Neo4j导出到CSV的最佳方法是什么?我在链接中使用CSV导入器将数据从CSV导入到Neo4j 我对数据执行了一些操作,我想将查询结果返回到csv中,有人能给我建议解决方案吗 iam使用neo4j 1.9.3和java 1.6执行以下操作Groovy中的一小段代码: @Grab(group="org.neo4j", module="neo4j-cypher", version="1.9") @Grab(group='net.sf.opencsv', module='opencsv',

将数据从Neo4j导出到CSV的最佳方法是什么?我在链接中使用CSV导入器将数据从CSV导入到Neo4j

我对数据执行了一些操作,我想将查询结果返回到csv中,有人能给我建议解决方案吗


iam使用neo4j 1.9.3和java 1.6执行以下操作
Groovy
中的一小段代码:

@Grab(group="org.neo4j", module="neo4j-cypher", version="1.9")
@Grab(group='net.sf.opencsv', module='opencsv', version='2.3') 
import org.neo4j.kernel.EmbeddedGraphDatabase
import org.neo4j.cypher.javacompat.ExecutionEngine
import au.com.bytecode.opencsv.CSVWriter

assert args, "specify location of graph.db and cypher statement"

def db = new org.neo4j.kernel.EmbeddedGraphDatabase(args[0])
def ee = new ExecutionEngine(db)
def result = ee.execute(args[1])
def columns = result.columns()

System.out.withWriter { writer ->
    CSVWriter csv = new CSVWriter(writer)
    csv.writeNext(columns as String[])

    for (def row in result) {
        def values = columns.collect {row[it]}
        csv.writeNext(values as String[])
    }
}
db.shutdown()

当然,
opencsv
也可以在纯Java环境中使用。
Groovy
中的一个简短片段,用于:

@Grab(group="org.neo4j", module="neo4j-cypher", version="1.9")
@Grab(group='net.sf.opencsv', module='opencsv', version='2.3') 
import org.neo4j.kernel.EmbeddedGraphDatabase
import org.neo4j.cypher.javacompat.ExecutionEngine
import au.com.bytecode.opencsv.CSVWriter

assert args, "specify location of graph.db and cypher statement"

def db = new org.neo4j.kernel.EmbeddedGraphDatabase(args[0])
def ee = new ExecutionEngine(db)
def result = ee.execute(args[1])
def columns = result.columns()

System.out.withWriter { writer ->
    CSVWriter csv = new CSVWriter(writer)
    csv.writeNext(columns as String[])

    for (def row in result) {
        def values = columns.collect {row[it]}
        csv.writeNext(values as String[])
    }
}
db.shutdown()

当然,
opencsv
也可以在纯Java环境中使用。

由于您已经有了ID,您可以使用cypher以块(共5块)的形式获取ID及其fwd关系,csv分隔符为“|”

使用neo4j外壳进行测试 语法:neo4j shelloutfile

节点的内嵌看起来像

START n=node(1,2,3,4,5) return ID(n),n.name?,n.property?;
START n=node(6,7,8,9,10) return ID(n),n.name?,n.property?;
....
START n=node(1,2,3,4,5) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
START n=node(6,7,8,9,10) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
....
reln的填充看起来像

START n=node(1,2,3,4,5) return ID(n),n.name?,n.property?;
START n=node(6,7,8,9,10) return ID(n),n.name?,n.property?;
....
START n=node(1,2,3,4,5) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
START n=node(6,7,8,9,10) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
....

要在Java API中执行相同的操作,只需在for循环中运行相同的操作。

由于您已经有了ID,您可以使用cypher以块(共5块)的形式获取ID及其fwd关系,csv分隔符为“|”

使用neo4j外壳进行测试 语法:neo4j shelloutfile

节点的内嵌看起来像

START n=node(1,2,3,4,5) return ID(n),n.name?,n.property?;
START n=node(6,7,8,9,10) return ID(n),n.name?,n.property?;
....
START n=node(1,2,3,4,5) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
START n=node(6,7,8,9,10) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
....
reln的填充看起来像

START n=node(1,2,3,4,5) return ID(n),n.name?,n.property?;
START n=node(6,7,8,9,10) return ID(n),n.name?,n.property?;
....
START n=node(1,2,3,4,5) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
START n=node(6,7,8,9,10) MATCH n-[r]->m RETURN ID(n),ID(m),TYPE(r),r.someprop?;
....

要在Java API中执行相同的操作,只需在for循环中运行相同的操作。

我想您想要单独的节点和关系csv文件吗?我不知道最好的方法..在单独的文件中获取节点和关系是最好的..对不起,我的错。忽略我的问题,我看错了。@Luane java有什么方法吗?@Luane或其他任何方法..我想你想要单独的节点和关系csv文件吗?我不知道最好的方法..在单独的文件中获取节点和关系是最好的..对不起,我的错。忽略我的问题,我读错了。@Luane有没有办法使用java?@Luane或其他任何方式?。谢谢回复Stefan..但是有没有办法使用java..因为我已经使用了java。你可以很容易地将上面的代码片段转换为普通的旧java-应该很容易。谢谢回复Stefan..但是有没有办法使用java..因为我已经使用了java。你可以很容易地转换上面的代码片段是简单的旧java-应该很容易。