我有3个表,一个用于顶点A,一个用于顶点B,第三个用于从B到A的边。如何将此图导入OrientDB?
目前,本教程只介绍了如何导入两个csv文件,一个用于顶点A,另一个用于顶点B和连接顶点A.加载顶点A,然后加载顶点B并从A创建边平均时间到B.
这适用于简单的图形。但是对于复杂的图形,例如,我有三种类型的顶点,A,B和C,三种类型的边缘,A - > B,B - > C,C - > A,我该如何导入此图表?
我想使用etl来加载图形,尽管JAVA API应该是一个解决方案。
更新:
最后,我想出了Stack Overflow的工作原理。我不应该尝试在评论中插入数据,而是更新问题
这是我的问题的具体例子:
两种类型的顶点:
大师(John,Joey,Michael,Robert,Allen),
宠物(史努比,白色,蓝色)。
两种关系:
喜欢(John喜欢Snoopy,Michael喜欢White,Michael喜欢Blue,Allen喜欢Snoopy,Michael喜欢White),
属于(史努比属于乔伊,怀特属于罗伯特,蓝属于约翰)。
如何使用OETL将这个小网络导入OrientDB?
答案 0 :(得分:2)
OrientDB ETL 工具允许您从外部源加载图表。如果您阅读OriendDB-ETL介绍, 读取由记录集合创建的源,在每一行上应用转换以生成文档记录(或顶点和可选的egdes,记住,OrientDB是引擎盖下的文档数据库,也支持图形),然后在OrientDB中加载生成的文档(或顶点/边)。
您应该使用多个JSON ETL文件来加载多个源,但在每个源中,您可以加载多个顶点类和边,具体取决于应用的转换(您可以应用多个)。输入源可以是SQL数据库,CSV和JSON格式的文件。有关从CSV源构建多个顶点类型和边的示例,请参阅"Import the database of beers"。
使用数据库(SQL)表作为数据源时,请查看Import from DBMS。
对于表,通常将A -edge-> B
映射到关系表(例如,对于多对多或当边缘本身具有属性),而对于更简单的边缘种类(一对一,一个) -to-many ...)一个简单的外键是习惯的。
ETL配置以JSON格式提供,对于SQL数据库,您可以配置SQL查询(提供"结果表")以及如何将结果字段映射到顶点和相关边。
当您有多个源时,可以添加多个JSON ETL命令,但在处理每个源时,您可以使用 变换器(参见变形金刚文档中的VERTEX,EDGE和MERGE)用于创建顶点和相关边。 CSV转换器甚至可以直接从每个CSV行创建一个ODocument。
注意:作为ETL工具(相对较新)的替代方法,您可以使用Java API以编程方式将数据导入OrientDB数据库。如果您需要加载大图,这是推荐的方法,因为您可以完全控制如何将数据加载到OrientDB中。