Neo4j: какое самое эффективное решение для импорта CSV? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть следующий код, и мне нужно использовать (если существует) код более эффективный, потому что у меня много строк в моем CSV, а Neo4j занимает слишком много времени, чтобы добавить все строки.

using periodic commit 1000
load csv with headers from "file:///registry_office.csv" as f 
 fieldterminator "|" 
 WITH f AS a
WHERE NOT a.JobName IS NULL and NOT a.JobCode IS NULL and NOT 
 a.JobDescription IS NULL and NOT a.JobLongDescription IS NULL 
 AND NOT a.Long_Description IS NULL AND NOT a.Position IS NULL 
 AND NOT a.birthDate IS NULL AND NOT a.startWorkingDate IS NULL
merge (b:Job{Name:a.JobName, Code:a.JobCode, Job:a.JobDescription, 
 JobLongDescription:a.JobLongDescription})
merge (c:Person{PersonName:a.PersonName, PersonSurname:a.PersonSurname, 
 CF:a.CF, birthDate:a.birthDate, address:a.address, age:a.age, 
 married:a.married, birthPlace:a.a.birthPlace})
merge (b)<-[:RELATED_TO{startWorkingDate:a.startWorkingDate, 
 JobPosition:a.Position}]-(c) 
return *;

У вас есть предложения для меня?

1 Ответ

0 голосов
/ 17 ноября 2018

Инструмент импорта обычно работает намного быстрее, чем LOAD CSV.

Однако ваш запрос предполагает, что каждая строка csv заканчивается шаблоном (b) <- (c), поэтому вам потребуется некоторая предварительная обработка для этого csv ... сначала отфильтруйте нулевые значения, затем разделите на 3 csvs (2 для узлов, 1 для отношений). </p>

Для этого у вас есть 3 основных варианта:

  • Excel - не подходит для больших CSV
  • CLI tool - что-то вроде csvkit
  • Программа - если у вас все в порядке с Python или JavaScript, вы сможете сделать это примерно через 20 м.
...