將數據從Neo4j導出到CSV的最佳方法是什麼,我使用CSV導入器將鏈接https://github.com/sroycode/neo4j-import中的數據從csv導入neo4j。使用java將數據從Neo4j導出到csv
我已經對數據執行了一些操作,我想要將查詢結果返回到csv,任何人都可以向我推薦解決方案。使用的Neo4j 1.9.3和java
IAM 1.6
將數據從Neo4j導出到CSV的最佳方法是什麼,我使用CSV導入器將鏈接https://github.com/sroycode/neo4j-import中的數據從csv導入neo4j。使用java將數據從Neo4j導出到csv
我已經對數據執行了一些操作,我想要將查詢結果返回到csv,任何人都可以向我推薦解決方案。使用的Neo4j 1.9.3和java
IAM 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環境中使用爲好。
感謝您的回覆Stefan ..但有什麼辦法與java..because我已經使用java。 – sakar
您可以輕鬆地將上面的代碼片段轉換爲普通的舊java - 應該很容易。 –
因爲您已經有了ID,您可以使用密碼來獲取ID(5)中的ID和他們的正向關係,csv分隔符是'|'
爲了測試使用的Neo4j殼 語法:Neo4j的殼< INFILE> 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?;
....
INFILE對RELN看起來像
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文件嗎? – Luanne
我不知道最好的方法.. getting節點和關係在單獨的文件是最好的..? – sakar
對不起,我的壞。忽略我的問題,我誤解了。 – Luanne