2016-04-25 6 views
0

Я пытаюсь импортировать файл CSV в Neo4j базу данных с помощью следующего запроса:Не удается успешно импортировать CSV в Neo4j

USING PERIODIC COMMIT 

LOAD CSV WITH HEADERS FROM "file:///I:/Traces.csv" AS row 

MERGE (e:Event {SystemCall: coalesce(row.syscall, "No Value"), ReturnValue: coalesce(row.retvalue,"No Value"), ReturnTime: coalesce(row.rettime,"No Value"), CallTime: coalesce(row.calltime,"No Value")}) 

MERGE (s:Subject {ProcessName: coalesce(row.processname, "No Value"), Pid: coalesce(row.pid, "No Value"), tid: coalesce(row.tid, "No Value")}) 
MERGE (o:Object {Argument1: coalesce(row.arg1, "No Value"), Argument2: coalesce(row.arg2, "No Value")}) 

MERGE (e)-[:IS_GENERATED_BY]->(s) 
MERGE (e)-[:AFFECTS]->(o) 
MERGE (e)-[:AFFECTS] ->(s) 

Файл CSV размещен на месте: https://drive.google.com/open?id=0B8vCvM9jIcTzRktRTGpxOUZXQjA

Запрос занимает почти 80К миллисекунды для запуска, но не возвращает строку. Пожалуйста помоги.

+0

Когда вы говорите, что «не возвращает строку», вы имеете в виду, что ничего не ставит в БД? В вашем запросе нет предложения 'RETURN', поэтому он не должен« возвращать »любые строки. Кроме того, вы можете просто показать первые несколько строк из файла (скажем, первые 10)? Файл размером 40 Мбайт слишком велик, чтобы ожидать от нас загрузки. – cybersam

+0

Я пытался подражать аналогичному запросу, который работал для меня, чтобы сгенерировать график LOAD CSV WITH HEADERS FROM "file: /// C: /test.csv" AS line MERGE (n: MyNode {Name: line. Source}) MERGE (m: MyNode {Name: line.Target}) MERGE (n) - [: TO {dist: line.distance}] -> (m) Этот продукт отлично работал без письменного возврата. Здесь строки не вставлены. Снимок экрана с содержимым файла: https://drive.google.com/open?id=0B8vCvM9jIcTzajgzOGdsSGd0RDQ Я поместил символы подчеркивания в поля заголовка и повторил запрос без какого-либо эффекта. –

ответ

0

Есть 2 проблемы.

  1. У вас не должно быть лишних пробелов вокруг разделителей запятой в ваших CSV-файлах. (Кроме того, вы должны исключить дополнительные 11 запятых в конце каждой строки).
  2. Каждое имя поля в заголовке файла CSV должно соответствовать соответствующему имени свойства в запросе Cypher. В настоящее время большинство имен отличаются.

Кстати, когда речь идет о Cypher запросе, термин «возвращение» почти всегда относится к статье RETURN. Ваш вопрос не имеет ничего общего с предложением RETURN и на самом деле о создании данных.

[UPDATE]

Кроме того, если вы хотите импортировать огромное количество данных в новый Neo4j DB, вы должны рассмотреть возможность использования Import tool вместо этого. Это было бы намного быстрее, чем LOAD CSV.

+0

Спасибо cybersam. Вопрос, который у меня есть, - как ускорить процесс генерации графика, когда у меня есть 475K строк в csv? Прямо сейчас это занимает навсегда ... –

+0

См. Мой обновленный ответ. – cybersam

Смежные вопросы