2015-11-09 3 views
2

Мне нужно переместить данные между двумя базами данных Neo4j. Один из них старше (2.1.8), а новый - 2.3.0. То, что я пробовал, это, но вы также можете увидеть, что что-то не так.Перемещение данных между базами данных Neo4j

/home/adam/neo4j-community-2.1.8/bin/neo4j-shell -path /home/adam/neo4j_bak9/ -c "dump" | /home/adam/neo4j-community-2.3.0/bin/neo4j-shell -file - 
Transaction started 
3 ms 

WARNING: Invalid input 'c': expected whitespace, comment, ';' or end of input (line 2, column 1 (offset: 39)) 
"create index on :`Location`(`latitude`)" 
^ 
ERROR (-v for expanded information): 
    Transaction was marked as successful, but unable to commit transaction so rolled back. 

-host  Domain name or IP of host to connect to (default: localhost) 
-port  Port of host to connect to (default: 1337) 
-name  RMI name, i.e. rmi://<host>:<port>/<name> (default: shell) 
-pid  Process ID to connect to 
-c   Command line to execute. After executing it the shell exits 
-file  File containing commands to execute, or '-' to read from stdin. After executing it the shell exits 
-readonly Connect in readonly mode (only for connecting with -path) 
-path  Points to a neo4j db path so that a local server can be started there 
-config Points to a config file when starting a local server 

Example arguments for remote: 
    -port 1337 
    -host 192.168.1.234 -port 1337 -name shell 
    -host localhost -readonly 
    ...or no arguments for default values 
Example arguments for local: 
    -path /path/to/db 
    -path /path/to/db -config /path/to/neo4j.config 
    -path /path/to/db -readonly 

Похоже, что neo4j создает синтаксис, который не может быть прочитан новой версией. Я что-то делаю неправильно, или это ошибка?

ответ

3

Это проблема, которая у меня была. Я думаю, что он ожидает полуколони (или наоборот) для операторов create index в верхней части dump. Грустно, что это не более плавный импорт/экспорт.

Другой вариант для простой и чистый способ модернизации Neo4j (при условии, что вы в состоянии иметь немного времени простоя):

  • Выключите оба сервера
  • Скопируйте graph.db реж из старого data реж на новую
  • Убедитесь, что новая база данных имеют allow_store_upgrade=true набор в файле conf/neo4j.properties
  • Запускает новую базу данных

Когда он запустится, он должен увидеть, что файлы базы данных из старой версии и автоматически обновляют их до формата 2.3.0.

+1

некоторое время назад я создал сценарий, который заботится о самих загрузках и выполняет обновления: http://blog.armbruster-it.de/2012/06/upgrading-an-old-neo4j-database-using- groovy/ –

+0

Я написал расширение оболочки, которое делает правильный экспорт: https://github.com/jexp/neo4j-shell-tools#cypher-export –

+0

Идея с копированием старой базы данных в новое местоположение и установка allow_store_upgrade была мой первый. Однако с этим была проблема. Я решил это, перейдя 2.1.8 -> 2.2.6 -> 2.3.0. Тем не менее, это хорошая вещь, простой способ сбрасывать базу данных, а затем загружать ее без дополнительных инструментов. Оригинальная идея выглядела многообещающей. Грустно, что из-за этой небольшой проблемы это невозможно. Я надеюсь, что он совместим не менее 2.3.0 <-> 2.3.0. – Cob

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