雑多なノート

プログラミング初心者がメモとかを書きます。基礎的なこともメモとして。偏食系のアニオタ。

Neo4jのデータをGraphML形式でエクスポート

Neo4jに貯めこんだデータをRで使いたくなったのでGraphML形式でエクスポートを行った

Web管理画面からじゃなくてシェルからコマンドを実行するらしい

neo4jの実行ファイルと同じディレクトリにあるneo4j-shellを使う

[vayacico@lavie bin]$ ./neo4j-shell 
Welcome to the Neo4j Shell! Enter 'help' for a list of commands
NOTE: Remote Neo4j graph database service 'shell' at port 1337

neo4j-sh (?)$ 

export-graphmlなるコマンドを使うと出来るらしいのだけどエラー

neo4j-sh (?)$ man export-graphml
No manual entry for 'export-graphml'

どうやら含まれていないらしい

neo4j-sh (?)$ help
Available commands: alias begin call cd commit create cypher dbinfo drop dump env explain export foreach gsh help index jsh load ls man match merge mknode mkrel mv optional paths planner profile pwd return rm rmnode rmrel rollback runtime schema set start trav unwind using with
Use man <command> for info about each command.

exportってコマンドがあったけどシェルのEXPORTと同じものみたいだった
どうやら自分で持ってこなければいけないらしい

neo4j-shell-tools からneo4j-shell-tools_3.0.1.zipをダウンロードして解凍する

[vayacico@lavie tmp]$ wget http://dist.neo4j.org/jexp/shell/neo4j-shell-tools_3.0.1.zip
[vayacico@lavie tmp]$ unzip neo4j-shell-tools_3.0.1.zip 
[vayacico@lavie tmp]$  ls
geoff-0.5.0.jar  import-tools-3.0.1.jar  mapdb-0.9.3.jar  opencsv-2.3.jar

解凍して出てきたファイルをneo4jのlib/以下にコピーする

[vayacico@lavie tmp]$ cp * /opt/neo4j-community-3.0.7/lib/

neo4j(本体)を再起動してもう一度neo4j-shellを起動すると使えるようになっている

[vayacico@lavie bin]$ ./neo4j-shell 
Welcome to the Neo4j Shell! Enter 'help' for a list of commands
NOTE: Remote Neo4j graph database service 'shell' at port 1337

neo4j-sh (?)$ man export-graphml

  
  -o     Output GraphML file.
  -r     Add all nodes of selected relationships.
  -t     Write key types upfront (double pass).
  
neo4j-sh (?)$ 

あとは出力ファイル名とクエリを引数として与えるとグラフがエクスポートできる

neo4j-sh (?)$ export-graphml -o output.graphml match (n:Foo)-[r]->() return n,r
Wrote to GraphML-file output.graphml 0. 100%: nodes = 165 rels = 27390 properties = 27885 time 5712 ms total 5712 ms


ここまでやってから気付いたけど普通にRから直接Neo4jにアクセスできるのねー