我可以将一个 csv 导入到一个集合中,然后 link 将它一次性导入到 ArangoDB 中的另一个集合中吗?
Can I import a csv into a collection and link it to another collection at one go in ArangoDB?
我有 2 个 CSV 文件,它们是关系数据库的导出文件。
CSV1 具有唯一 ID,
CSV2 没有,但有一列 linking 到 CSV1 对象。
我导入 CSV1,将唯一 ID 映射到 _key。
我想将 CSV2 导入另一个集合,然后 link 通过第一个集合中的对象的边将其导入。
最简单的方法是什么?
P.S.
(我知道在 Neo4j 中,使用导入工具这样的事情是微不足道的,并且想知道 ArangoDB 中是否存在这样的功能,否则我将不得不编写一些 AQL 来完成它)。
真诚的,
埃拉德
虽然没有导入数据的向导,但假设您熟悉命令行(既然您在本网站,我敢打赌您一定是),将数据导入 ArangoDB 也很简单:
- 使用 Arango 导入工具将您的 CSV 文件导入两个集合
- 创建您的边缘集合
- 使用简单的 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 文件中已经有了边缘集合,您也可以直接导入它:
arangoimp --file <path/filename> --collection <collectionName> --create-collection true --type csv --create-collection-type edge --server.database <databaseName>
最后,请注意上面列表中的 2 和 3 可以在 Arango GUI 中完成,如果你在那里更舒服的话。 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,因此可能需要稍作调整。
我有 2 个 CSV 文件,它们是关系数据库的导出文件。
CSV1 具有唯一 ID,
CSV2 没有,但有一列 linking 到 CSV1 对象。
我导入 CSV1,将唯一 ID 映射到 _key。
我想将 CSV2 导入另一个集合,然后 link 通过第一个集合中的对象的边将其导入。
最简单的方法是什么?
P.S.
(我知道在 Neo4j 中,使用导入工具这样的事情是微不足道的,并且想知道 ArangoDB 中是否存在这样的功能,否则我将不得不编写一些 AQL 来完成它)。
真诚的, 埃拉德
虽然没有导入数据的向导,但假设您熟悉命令行(既然您在本网站,我敢打赌您一定是),将数据导入 ArangoDB 也很简单:
- 使用 Arango 导入工具将您的 CSV 文件导入两个集合
- 创建您的边缘集合
- 使用简单的 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 文件中已经有了边缘集合,您也可以直接导入它:
arangoimp --file <path/filename> --collection <collectionName> --create-collection true --type csv --create-collection-type edge --server.database <databaseName>
最后,请注意上面列表中的 2 和 3 可以在 Arango GUI 中完成,如果你在那里更舒服的话。 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,因此可能需要稍作调整。