【问题标题】:exporting data from Neo4j to csv using java使用 java 将数据从 Neo4j 导出到 csv
【发布时间】:2013-10-14 13:38:15
【问题描述】:

将数据从 Neo4j 导出到 CSV 的最佳方法是什么,我在链接 https://github.com/sroycode/neo4j-import 中使用 CSV 导入器将数据从 csv 导入到 Neo4j。

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

我使用 neo4j 1.9.3 和 java 1.6

【问题讨论】:

  • 我想你想要单独的节点和关系 csv 文件?
  • 我不知道最好的方法..在单独的文件中获取节点和关系是最好的..?
  • 对不起,我的错。忽略我的问题,我看错了。
  • @Luanne java..有什么办法吗?
  • @Luanne 或任何其他方式..?

标签: neo4j


【解决方案1】:

Groovy 中的简短 sn-p 这样做:

@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环境中使用。

【讨论】:

  • 感谢 Stefan 的回复..但是 java..因为我已经用过 java..
  • 您可以轻松地将上面的 sn-p 转换为普通的旧 java - 应该很容易。
【解决方案2】:

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

测试使用 neo4j-shell 语法:neo4j-shell outfile

节点的infile看起来像

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?;
....

reln 的 infile 看起来像

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 循环中运行同样的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多