Ничего не происходит при использовании Cypher-shell для выполнения скриптов - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь выполнить серию запросов Cypher с использованием оболочки Cypher в соответствии с здесь . Я создал файл с именем «cypher.ex1» и поместил его в папку import и bin. Вот его содержание:

MATCH (n) RETURN n;

MATCH (batman:Person {name: 'Bruce Wayne'}) RETURN batman;

Я пытаюсь выполнить его, используя:

$neo4j-home> cat cypher.ex1 | bin/cypher-shell -u neo4j -p 123456 --format plain

, но когда я запускаю это, ничего не происходит и после долгого ожидания без вывода Мне нужно нажать «CTRL + C», чтобы завершить команду. Вот скриншот проблемы:

enter image description here

На самом деле, cypher-shell прекрасно работает для однострочных команд, но не для скриптов. Что не так?

1 Ответ

1 голос
/ 15 февраля 2020

Вы пытаетесь выполнить эту командную строку:

cat cypher.ex1 | bin/cypher.shell -u neo4j - 123456

из в среде cypher.shell. Это не будет работать, поскольку cypher.shell поддерживает только операторы Cypher и ограниченный набор команд (используйте команду :help, чтобы увидеть, что доступно).

Причина, по которой с вами ничего не произошло (даже ошибка) ) потому что cypher.shell не видел двоеточие (':') в начале вашей командной строки, поэтому предполагалось, что вы вводили оператор Cypher и ожидали (всегда) конечной точки с запятой (';') перед тем парсинг.

Если вы хотите выполнить именно эту командную строку, вы должны выполнить ее вне из cypher-shell (когда она не запущена).

Однако Если вы действительно хотите выполнить эквивалентное действие из в среде cypher.shell, вы можете использовать команду :source. Например:

:source cypher.ex1

Местом расположения исходного файла по умолчанию является «текущий рабочий каталог», то есть каталог, в котором вы находились при запуске cypher.shell. Если файл находится в другом месте, вы можете указать относительный путь к файлу из текущего рабочего каталога в качестве аргумента :source.

...