我有2个CSV文件,它们是关系DB的导出。
CSV1具有唯一的ID,
CSV2没有,但具有链接到CSV1对象的列。
我导入了将唯一ID映射到_key的CSV1。
我想将CSV2导入到另一个集合中,并通过边缘将其链接到第一个集合中的对象。
最简单的方法是什么?
P.S。
(我在Neo4j中知道,使用导入工具可以做到这一点很简单,并且想知道ArangoDB中是否存在这样的功能,否则我将不得不编写一些AQL来做到这一点。)
此致, 逃跑
答案 0 :(得分:1)
虽然没有向导可以导入数据,但是假设您熟悉命令行(因为您在此站点,所以我敢打赌),将数据导入ArangoDB也很简单:
以下是使用arangoimp导入csv的示例语法:
arangoimp --file <path/filename> --collection <collectionName> --create-collection true --type csv --server.database <databaseName> —server.username <username>
以下是一些常用选项:
翻译列名称:
arangoimport --file "data.csv" --type csv --translate "from=_from" --translate "to=_to"
忽略空值(而不是引发警告和不加载数据),请使用标志:
--ignore-missing
忽略导入文件中的列:
arangoimport --file "data.csv" --type csv --remove-attribute “attributeName”
此外,如果您已经在csv文件中包含了edge集合,则也可以直接导入它:
arangoimp --file <path/filename> --collection <collectionName> --create-collection true --type csv --create-collection-type edge --server.database <databaseName>
最后,请注意,如果您愿意,可以在Arango GUI中完成上面列表中的2和3。 3的语句可能类似于
let newEdges = ( for csv1rec in csv1_collection
for csv2rec in csv2_collection
filter csv1rec.id = csv2rec.colA
return {from : csv1rec.id , to : csv2rec.colA} )
for rec in newEdges
insert {_from: rec.from, _to: rec.to} in edgeCollection
请注意,我是从内存中为上述第3步编写AQL的,因此可能需要进行一些调整。