2015-04-24 3 views
5

Я запускаю несколько запросов Neo4j cypher, используя neo4j-shell. У них длительное время выполнения, так как я импортирую большие файлы CSV.Вывести сообщения о статусе на консоль из cypher neo4j-shell

Я хотел бы выводить некоторые сообщения на консоль по мере завершения каждого этапа импорта, чтобы мы могли видеть ход импорта во время выполнения, не дожидаясь завершения выполнения.

Я проверил Cypher RefCard и не могу найти пример этого. Поддерживает ли cypher вывод в окно консоли оболочки?

ответ

1

Строка «Возврат» печатается дважды, так как первый заголовок, а второй - это содержимое. Вы можете использовать «AS» с обратными кавычками, чтобы изменить заголовок, чтобы сделать его выглядеть лучше:

MATCH (n) 
DETACH DELETE n; 
RETURN "Existing data removed" AS `Action:`; 

Даже лучше, вы можете объединить вывод операции с сообщением:

MATCH (n) 
DETACH DELETE n 
RETURN count(n) AS `Existing data removed:`; 
+0

Мне нравится этот подход. Простой и легкий. – Adam

0

Это было бы здорово, но я не думаю, что это возможно. Раньше я прибегал к подсчету числа запросов cypher, а затем подсчитывал количество сообщений об успешности в терминале (ugh;)

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

(также, возможно, придется это покрыто, но помочь с медленным импорта не забудьте создать соответствующие индексы и avoid the eager!)

+0

тьфу. это то, что я должен делать. Неужели это действительно глупо? все еще ищут решение! – ekkis

+0

Downvoted как другие ответы показывают возможности ... – Adam

3

Я считаю, это очень интересная тема. ИМО лучший способ достичь этого в мощное средство, чтобы написать плагин сервера:

  • Вы создать TransactionEventHandler, который реализует TransactionEventHandler interface

  • Вы получите TransactionData, который представляет собой то, что было изменено в ходе сделка

  • Вы можете преобразовать изменения в JSON

  • и, наконец, записать их в журнал

  • активировать журналы в appenders

0

хмм ... ок. вы можете ввести инструкции RETURN, чтобы дать вам ключ, например.

load cvs with headers from 'file1.csv' 
return 'file1' 
load cvs with headers from 'file2.csv' 
return 'file2' 

т.д.

0

Я сделал это с помощью RETURN. Но каждое значение RETURN печатается дважды! Не знаете, что именно там происходит. Но для отладки это нормально.

RETURN "Removing existing data..."; 
MATCH (n) 
DETACH DELETE n; 
RETURN "Existing data removed"; 
Смежные вопросы