Як видалити / створити бази даних в Neo4j?


104

Чи можливо створити / видалити різні бази даних в базі даних графіків Neo4j, як у MySQL? Або, принаймні, як видалити всі вузли та зв’язки існуючого графіка, щоб отримати чисту настройку для тестів, наприклад, використовуючи команди оболонки, схожі на rmrelабо rm?

Відповіді:


98

Ви можете просто видалити весь каталог графіків rm -rf, оскільки Neo4j нічого не зберігає поза цим:

rm -rf data/*

Крім того, ви можете, звичайно, перебрати всі вузли та видалити їх зв’язки та самі вузли, але це може бути занадто дорогим лише для тестування ...


7
І якщо ви повторите всі вузли, може бути непоганою ідеєю дозволити базовому вузлу залишатися.
nawroth

6
Де знаходиться каталог графіків?
Прамод

3
@Pramod його в каталозі даних каталогу neo4j. Ви не можете пропустити цього
devshorts

7
На MacOSX з домашньою мовою: /usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
Ешлі

5
Можливо, це гарна ідея зупинити ваш сервер neo4j, перш ніж виконувати цю команду.
Джон Бачір

98

ще простіша команда видалити всі вузли та зв’язки:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

11
+1 для заяви. Але майте на увазі, що тільки ви видаляєте всі вузли, це не означає, що використовувані мітки повністю забуті. У браузері все одно відображатимуться всі мітки. Діто для властивостей вузла та міток зв’язків.
Dilum Ranatunga

@DilumRanatunga 1. Чи знаєте ви, як змусити нео забути етикетки? 2. Як можуть зберігатись властивості вузлів, якщо вузли видалено або мітки зв’язків зберігаються у відносинах?
Джон Бачір

1
Я не маю на увазі фактичні значення; Я маю на увазі самі назви власності.
Dilum Ranatunga

5
У БД можуть бути не тільки вузли та ребра, але й індекси, і їх складніше позбутися. Крім того, мені просто вдалося зруйнувати екземпляр БД шляхом багаторазового повторного тестування, включаючи видалення, і це виглядає як фізичне видалення файлів БД та перетворення їх на перезапуск Neo4J приносить явне поліпшення продуктивності.
потік

Я вийшов із пам’яті на neo4j у контейнері docker.
bolec_kolec

52

З Neo4j 2.3,

Ми можемо видалити всі вузли із зв’язками ,

MATCH (n)
DETACH DELETE n

Наразі немає можливості створити декілька баз даних в Noe4j. Вам потрібно зробити кілька магазинів даних Neo4j. Дивіться посилання .


3
Найкраща відповідь, якщо ви не хочете вдаватися до файлової системи.
ThomasH

Проблема такого підходу полягає в тому , що він не буде видаляти обмеження , ні індекси
Davide

47

Створення нової бази даних в Neo4j

Перш ніж запустити спільноту neo4j, натисніть опцію перегляду

введіть тут опис зображення

і виберіть інший каталог

введіть тут опис зображення

введіть тут опис зображення

і натисніть кнопку "Пуск".

введіть тут опис зображення

Нова база даних, створена в цьому каталозі


12

швидкий і брудний спосіб, який працює добре:

bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start

11

Для всіх, кому потрібен чистий графік для запуску тестового набору - https://github.com/jexp/neo4j-clean-remote-db-addon - це чудове розширення, яке дозволяє очистити db через REST-дзвінок. Очевидно, однак, не використовуйте це у виробництві!


Здається видалити вузол 0. Як його відтворити?
Буде

1
Насправді він пропускає опорний вузол ( github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/… ). Але якщо ваш опорний вузол відсутній (і він вам потрібен), вам потрібно буде почати з чистого режиму даних, оскільки ще немає setRefenceNode()дзвінка ( stackoverflow.com/questions/7186832/… ).
Метт Луонго

7

Запустіть свій тестовий код на іншому екземплярі neo4j.

  1. Скопіюйте каталог neo4j в нове місце. Використовуйте це для тестування. CD в ​​новий каталог.
  2. Змініть порт, щоб ви могли запускати свої тести і нормально використовувати їх одночасно. Щоб змінити порт, відкрийте conf/neo4j-server.propertiesі встановіть org.neo4j.server.webserver.portневикористаний.
  3. Запустіть тестовий сервер із налаштування. Зробіть ./neo4j stopі rm -rf data/graph.dbна сльозі.

Детальніше див. Neo4j: Як переключити базу даних? та док .


6

У Neo4j 2.0.0? більше не підтримується. Замість цього використовуйте OPTIONAL MATCH:

START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;

6

Найпростіша відповідь: НІ

Найкращий спосіб "почати спочатку" - це

  • перейти до іншої порожньої папки даних

або

  • повністю закрити Neo4j
  • опустіть стару папку даних
  • перезапустіть Neo4j і встановіть порожню папку як папку даних

Існує спосіб видалити всі вузли та зв’язки (як описано тут )

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

1

У 2.0.0 -M6 Ви можете виконати наступний скрипт Cypher, щоб видалити всі вузли та відносини:

start n=node(*)
match (n)-[r?]-()
delete n,r

2
На жаль, це призводить до помилки в останньому випуску 2.0.0: SyntaxException: Знак питання більше не використовується для необов'язкових шаблонів - замість цього використовуйте OPTIONAL MATCH (рядок 1, стовпець 26) ==> "start n = node (*) match (n ) - [r?] - () видалити n, r "
richj

Я не розумію downvotes, так як відповідь ясно говорить в 2.0.0 -M6 , яка була останньою версією , коли я відповів на питання, в той час як інші надаються правильні відповіді на даний момент останнього випуску.
Мартін Зелер

1

Щодо версії 3, я вважаю, що зараз можна створити окремі екземпляри бази даних, і тому їх розташування дещо відрізняється.

Посилаючись на: https://neo4j.com/developer/guide-import-csv/

--Into retail.db, очевидно, є цільовою базою даних, яка не повинна містити існуючої бази даних.

У моєму вікні Ubuntu розташування знаходиться в:

/var/lib/neo4j/data/databasesде я зараз бачу лише те, graph.dbщо, на мою думку, повинно бути за замовчуванням.


0

Ви можете видалити файли даних, і якщо ви хочете пройти цей шлях, я рекомендую, наприклад, видалити лише ваш graph.db. В іншому випадку ви зіпсуєте свою інформацію про автентифікацію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.