如何将CSV文件导入Titan图数据库?

chr*_*ris 4 database graph-databases gremlin titan tinkerpop

任何人都可以提供一些示例代码或提示,如何将1MB CSV节点和另外1MB CSV边缘导入到Cassandra上运行的Titan图数据库中?

我有通过Gremlin导入的小型CSV文件,但这似乎不适合大文件.

我见过Faunus可以做到这一点,但是如果可能的话,我想避免花几天的时间来设置它.

看起来BatchGraph可能是最好的方法(https://github.com/tinkerpop/blueprints/wiki/Batch-Implementation),但示例似乎不完整.

chr*_*ris 6

我在https://groups.google.com/forum/#!topic/aureliusgraphs/ew9PJVxa8Xw上回答了我的问题:

1)gremlin脚本适用于1mb导入(Stephen Mallette)

2)BatchGraph代码(Daniel Kuppitz)

Prerequisties:

echo "alice,32"         > /tmp/vertices.csv
echo "bob,33"          >> /tmp/vertices.csv
echo "alice,knows,bob"  > /tmp/edges.csv
Run Code Online (Sandbox Code Playgroud)

在Gremlin REPL中:

config = new BaseConfiguration()
config.setProperty("storage.backend", "inmemory")

g = TitanFactory.open(config)
bg = new BatchGraph(g, VertexIDType.STRING, 1000)

new File("/tmp/vertices.csv").each({ line ->
  (username, age) = line.split(",")
  user = bg.addVertex("user::" + username)
  ElementHelper.setProperties(user, ["username":username,"age":age.toInteger()])
})

new File("/tmp/edges.csv").each({ line ->
  (source, label, target) = line.split(",")

  v1 = bg.getVertex("user::" + source)
  v2 = bg.getVertex("user::" + target)

  bg.addEdge(null, v1, v2, label)
})

bg.commit()
Run Code Online (Sandbox Code Playgroud)