Могу ли я импортировать CSV в коллекцию и связать ее с другой коллекцией за один раз в ArangoDB? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть 2 файла CSV, которые являются экспортом базы данных отношений.CSV1 имеет уникальные идентификаторы,CSV2 не имеет, но имеет столбец, связывающий объекты CSV1.Я импортирую CSV1, сопоставляя уникальные идентификаторы с _key.Я хотел бы импортировать CSV2 в другую коллекцию и связать его через ребро с объектами в первой коллекции.Какой самый простой способ сделать это?

PS(Я знаю, что в Neo4j такая вещь тривиальна при использовании инструмента импорта, и мне было интересно, существуют ли такие функции в ArangoDB, или мне придется написать несколько AQL для этого).

С уважением, Elad

1 Ответ

1 голос
/ 04 апреля 2019

Хотя нет мастера для импорта данных, импорт данных в ArangoDB также тривиален, если вы знакомы с командной строкой (что, поскольку вы находитесь на этом сайте, я уверен, что вы есть):

  1. используйте инструмент импорта Arango для импорта файлов CSV в две коллекции
  2. Создайте свою коллекцию ребер
  3. используйте простой запрос AQL для вставки данных в коллекцию ребер

Вот пример синтаксиса для импорта csv с помощью arangoimp:

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, если вам там удобнее.Оператор для 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

Обратите внимание, что я пишу AQL выше для шага 3 из памяти, поэтому может потребоваться небольшая настройка.

...