将 csv 文件导入 ArangoDB 时缺少“_from”或“_to”属性

问题描述

我正在尝试将两个 csv 文件导入 arangoDB。一个创建为文档“帐户”,另一个创建为边缘“交易”。对于帐户,它有效。但是,在导入交易数据时,会发生错误。我尝试使用以下代码从命令提示符(Windows 10)导入此 csv 文件

arangoimport --file transactions.csv --type csv --create-collection true -server.database AML --create-collection-type edge --collection transactions --translate "SENDER_ACCOUNT_ID =_from" --translate " RECEIVER_ACCOUNT_ID =_to"

在我的数据中,第一行是标题,其中包含 TX_ID,SENDER_ACCOUNT_ID,RECEIVER_ACCOUNT_ID,TX_TYPE,TX_AMOUNT,TIMESTAMP,IS_FRAUD,ALERT_ID。我的原始数据如下所示: transactions

我知道边需要 _from 和 _to 属性。因此,在我的命令行中,我使用“translate”将输入文件中的列重命名为 _from 和 _to,如上面的代码所示。但它仍然给出如下错误信息:

error message

缺少“_from”或“_to”属性,违规文档: {"TX_ID":17144,"_from":84,"_to":87,... }

你能给我一些提示吗?我在这个问题上挣扎了好几个小时,一个月前看到过类似的问题,但没有答案。希望有人可以帮助我。非常感谢。

解决方法

正如 gurisko 在评论中指出的那样,_from_to 必须是有效的文档标识符。也就是说,顶点集合的名称,后跟正斜杠和顶点的文档键,例如"accounts/87"

在错误消息中,您可以看到属性值是数字,但必须是带有集合名称的字符串。但是,您不必修改 CSV 文件,因为 arangoimport 让您通过 startup options --from-collection-prefix--to-collection-prefix 在集合名称前加上。

arangoimport --file transactions.csv --type csv --server.database AML --create-collection --create-collection-type edge --collection transactions --translate SENDER_ACCOUNT_ID=_from --translate RECEIVER_ACCOUNT_ID=_to --from-collection-prefix accounts --to-collection-prefix accounts

导入的文档应该如下所示:

{ "TX_ID": 17144,"_from": "accounts/84","_to": "accounts/87",... }