2014-03-05 69 views
0

我需要弄清楚如何使用預先定義的索引屬性鍵導入CSV文件導入CSV文件,我嘗試這樣做:泰坦圖(嵌入式卡桑德拉 - Elasticsearch),使用現有的外部索引屬性鍵

隨着空泰坦圖形驗證碼工作完全

新的文件( 「/ home/user中/泰坦服務器0.4.2/propnodes.csv」)eachLine {線 - > (BaseRecId,StreetNumber,StreetName,StreetSuffix,市,縣,州,郵編)= line.split(「,」);

prop = g.addVertex(「BaseRecId ::」+ BaseRecId);

ElementHelper.setProperties(道具,[ 「BaseRecId」:BaseRecId, 「StreetNumber」:StreetNumber, 「StreetName」:StreetName, 「StreetSuffix」:StreetSuffix, 「城市」:城市, 「縣」:縣」國家」:國家,‘郵編’:郵編])}

現在,由於泰坦指標需要設置前填充任何數據,第一步我這樣做:

g.makeKey('BaseRecId ').dataType(Integer.class).indexed('search',Vertex.class).make(); ('StreetName')。dataType(String.class).indexed('search',Vertex.class).make();

,然後當我嘗試使用上面的代碼導入數據,我得到這個錯誤

在處理語言腳本[常規]時出現錯誤。會話中所有圖形上的所有事務都以失敗結束:javax.script.ScriptException:javax.script.ScriptException:java.lang.NumberFormatException:對於輸入字符串:「BaseRecId」

如何導入CSV文件使用現有的外部索引屬性Keys?

回答

0

您將BaseRecId定義爲整數,但您試圖將其作爲字符串推入。你的代碼應該是這個樣子:

ElementHelper.setProperties(prop, ["BaseRecId" : Integer.parseInt(BaseRecId),"StreetNumber": StreetNumber,"StreetName" : StreetName,"StreetSuffix" : StreetSuffix,"City" : City,"County": County,"State" : State,"Zip" : Zip])} 

而且g.addVertex不會尊重你傳遞的是ID。泰坦不允許用戶提供的ID。最後,您可以考慮使用groovy-csv來處理Gremlin REPL中的CSV文件。

+0

謝謝斯蒂芬爲有用的方法,即使問題仍然存在,我已將** prop = g.addVertex(「BaseRecId ::」+ BaseRecId)**更改爲** prop = g.addVertex()* *和我做了一個字符串類型的關鍵BaseRecId,它的工作。我想知道爲什麼它不能與整數工作,我試過**「BaseRecId」:Integer.parseInt(BaseRecId)**和**'BaseRecId':BaseRecId.toInteger()**與上面相同的錯誤。 – Alejandro

+0

很高興你知道了,但是如果你想進行數值範圍查詢,字符串不會幫助你做到這一點,我不認爲。不知道爲什麼Integer不適用於。 「衆神圖」示例顯示它是可能的:https://github.com/thinkaurelius/titan/blob/master/titan-core/src/main/java/com/thinkaurelius/titan/example/GraphOfTheGodsFactory。 java#L52 –

+0

是的,無論如何,我似乎在向前邁進。謝謝你的幫助! – Alejandro