簡體   English   中英

我可以在ArangoDB中一次將一個csv導入一個集合並將其鏈接到另一個集合嗎?

[英]Can I import a csv into a collection and link it to another collection at one go in ArangoDB?

我有2個CSV文件,它們是關系數據庫的導出。
CSV1具有唯一的ID,
CSV2沒有,但具有鏈接到CSV1對象的列。
我導入了將唯一ID映射到_key的CSV1。
我想將CSV2導入另一個集合,並通過邊緣將其鏈接到第一個集合中的對象。
最簡單的方法是什么?

PS
(我知道在Neo4j中,使用導入工具是一件微不足道的事情,並且想知道ArangoDB中是否存在這樣的功能,否則我將不得不編寫一些AQL來做到這一點)。

真誠的,埃拉德

雖然沒有向導可以導入數據,但是假設您對命令行感到滿意,那么將數據導入ArangoDB也是很簡單的(由於您位於此站點,所以我敢打賭):

  1. 使用Arango導入工具將CSV文件導入兩個集合
  2. 創建您的邊緣收藏
  3. 使用簡單的AQL查詢將數據插入邊緣集合

以下是使用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,因此可能需要進行一些調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM