2014-02-27 72 views

回答

1

您可以導出爲CSV並將其導入到節點(由於您擁有數百萬條記錄,因此可能無法正常工作) 您可以編寫一個程序來執行此操作(這是我目前正在處理的內容)。 這也取決於你知道什麼編程語言......但底線是,因爲沒有兩個數據庫是平等創建的(除非有意),創建一個全面的解決方案來將數據從SQL遷移到Neo是非常困難的。

到目前爲止,我發現的最好方法是創建一個程序,查詢數據庫中的表,查找所有相關表(即外鍵),並將所有這些錶行導入Neo,並使用標記節點表名稱,然後將外鍵處理爲關係。

這並不容易。我一直在爲我的數據庫在這裏工作一週左右......但我很近!

2

這很簡單,只需將您應該成爲節點的實體映射到一組csv文件以及應該成爲另一組文件中的關係的連接。

然後用我的批處理進口商運行它們:https://github.com/jexp/batch-import/tree/20#binary-download

import.sh nodes1.csv,nodes2.csv rels1.csv,rels2.csv 

添加類型和索引信息的標題和batch.properties配置文件需要。

您可以將批量導入程序用於初始插入程序,但也可以使用後續更新(但必須關閉數據庫)。

這是很容易使用的驅動程序連接到現有的數據庫,然後提取正確的形狀和種類的信息,並將其插入到您的圖形模型,

或者使用暗號語句與參數或內嵌式,用於持續更新的事務性Java API。 參見:http://jexp.de/blog/2013/05/on-importing-data-in-neo4j-blog-series/

+0

用數百萬行來做這件事可能很困難。只需創建CSV可能需要相當多的工作。如果您有要導入的視圖或通過存儲過程生成的POCO對象,這也會變得複雜。如果表格返回的數據大於系統上的內存,則將數據從SQL提取到CSV將需要自己的程序。如果有某種ETL應用程序,您可以直接查詢SQL數據庫並將數據流式傳輸,那將非常棒。 – dcinzona

+0

此外,只是一個簡單的想法,但CSV導入選項似乎是一次性導入的好選擇。如果您正在切換數據庫,這是完美的,但如果您使用Neo4j作爲補充數據庫,則還希望能夠處理任何更新。 – dcinzona

+1

對於ETL嘗試Pentaho,無論是使用Neo4j JDBC驅動程序還是事務性密碼REST端點。 – jjaderberg