Properties Titan graph(嵌入式Cassandra-Elasticsearch),使用现有的外部索引属性键导入CSV文件

Properties Titan graph(嵌入式Cassandra-Elasticsearch),使用现有的外部索引属性键导入CSV文件,properties,import,key,gremlin,titan,Properties,Import,Key,Gremlin,Titan,我需要弄清楚如何使用预定义的索引属性键导入CSV文件,我尝试了以下方法: 对于一个空的泰坦图,这段代码可以完美地工作 新文件(“/home/User/titan-server-0.4.2/propnodes.csv”).eachLine{line-> (BaseRecId、StreetNumber、StreetName、StreetSuffix、City、County、State、Zip)=行。拆分(“,”; prop=g.addVertex(“BaseRecId::”+BaseRecId);

我需要弄清楚如何使用预定义的索引属性键导入CSV文件,我尝试了以下方法:

对于一个空的泰坦图,这段代码可以完美地工作

新文件(“/home/User/titan-server-0.4.2/propnodes.csv”).eachLine{line-> (BaseRecId、StreetNumber、StreetName、StreetSuffix、City、County、State、Zip)=行。拆分(“,”;

prop=g.addVertex(“BaseRecId::”+BaseRecId);

ElementHelper.setProperties(prop,[“BaseRecId”:BaseRecId,“StreetName”:StreetName,“StreetSuffix”:StreetSuffix,“City”:City,“country”:country,“State”:State,“Zip”:Zip])

现在,由于在填充任何数据之前需要设置Titan索引,所以第一步是:

g.makeKey('BaseRecId').dataType(Integer.class).索引('search',Vertex.class.).make(); g、 makeKey('StreetName').dataType(String.class).索引('search',Vertex.class.).make()

然后当我尝试用上面的代码导入数据时,我得到了这个错误

处理语言[groovy]的脚本时出错。会话中所有图形的所有事务都以失败告终:javax.script.ScriptException:javax.script.ScriptException:java.lang.NumberFormatException:对于输入字符串:“BaseRecId”


如何使用现有的外部索引属性键导入CSV文件?

您将
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。Titan不允许用户提供ID。最后,您可以考虑使用GRMLILRIP.

中的CSV文件来工作,谢谢史蒂芬的帮助方法,即使问题仍然存在,我已经将PROP=G.AdvEdToX(“BaseCeID::+ BaseCeID”)改为PROP= G.AdvEdTrimeTo(),并且我制作了一个字符串类型的密钥BaseRecId,它起了作用。我想知道为什么它不适用于integer,我已经尝试过“BaseRecId”:integer.parseInt(BaseRecId)和“BaseRecId”:BaseRecId.toInteger()与上面的错误相同。很高兴你找到了答案,但是如果你想进行数值范围查询,字符串并不能帮助你做到这一点,我不这么认为。不确定Integer为什么不适用于。“神的图形”的例子表明这是可能的:是的,我似乎,无论如何,我正在前进。谢谢你的帮助!