Статьи

Neo4j Import: java.lang.IllegalStateException: смешивание указанных и неуказанных групповых принадлежностей в одном импорте не поддерживается

Я работал с Neo4j Import Tool недавно после небольшого перерыва и столкнулся с интересным сообщением об ошибке, которое я изначально не понимал.

У меня было несколько CSV-файлов, содержащих узлы, которые я хотел импортировать в Neo4j. Их содержимое выглядит так:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
$ cat people_header.csv
name:ID(Person)
  
$ cat people.csv
"Mark"
"Michael"
"Ryan"
"Will"
"Jennifer"
"Karin"
  
$ cat companies_header.csv
name:ID(Company)
  
$ cat companies.csv
"Neo4j"

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

Я выполнил следующую команду, чтобы создать новую базу данных Neo4j из этих файлов:

1
2
3
4
5
$ ./bin/neo4j-admin import \
    --database=blog.db \
    --mode=csv \
    --nodes:Person people_header.csv,people.csv \
    --nodes:Company companies_heade.csv,companies.csv

что привело к этому сообщению об ошибке:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
Neo4j version: 3.3.3
Importing the contents of these files into /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/data/databases/blog.db:
Nodes:
  :Person
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/people_header.csv
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/people.csv
  
  :Company
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/companies.csv
  
...
  
Import error: Mixing specified and unspecified group belongings in a single import isn't supported
Caused by:Mixing specified and unspecified group belongings in a single import isn't supported
java.lang.IllegalStateException: Mixing specified and unspecified group belongings in a single import isn't supported
    at org.neo4j.unsafe.impl.batchimport.input.Groups.getOrCreate(Groups.java:52)
    at org.neo4j.unsafe.impl.batchimport.input.csv.InputNodeDeserialization.initialize(InputNodeDeserialization.java:60)
    at org.neo4j.unsafe.impl.batchimport.input.csv.InputEntityDeserializer.initialize(InputEntityDeserializer.java:68)
    at org.neo4j.unsafe.impl.batchimport.input.csv.ParallelInputEntityDeserializer.lambda$new$0(ParallelInputEntityDeserializer.java:104)
    at org.neo4j.unsafe.impl.batchimport.staging.TicketedProcessing.lambda$submit$1(TicketedProcessing.java:103)
    at org.neo4j.unsafe.impl.batchimport.executor.DynamicTaskExecutor$Processor.run(DynamicTaskExecutor.java:237)

Вывод на самом деле полезно показывает, из каких файлов он импортируется, и в разделе «Компания» мы видим, что заголовочный файл отсутствует.

В результате опечатки, которую я сделал при попытке ввода companies_header.csv , инструмент теперь обрабатывает первую строку companies.csv как заголовок, и поскольку мы не указали группу (например, Company, Person) в этой строке, мы получаем эта ошибка.

Давайте исправим опечатку и попробуем еще раз:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ ./bin/neo4j-admin import \
    --database=blog.db \
    --mode=csv \
    --nodes:Person people_header.csv,people.csv \
    --nodes:Company companies_header.csv,companies.csv
  
Neo4j version: 3.3.3
Importing the contents of these files into /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/data/databases/blog.db:
Nodes:
  :Person
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/people_header.csv
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/people.csv
  
  :Company
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/companies_header.csv
  /Users/markneedham/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-b59e33d5-2060-4a5d-bdb8-0b9f6dc919fa/installation-3.3.3/companies.csv
  
...
  
IMPORT DONE in 1s 5ms.
Imported:
  7 nodes
  0 relationships
  7 properties
Peak memory usage: 480.00 MB

Успех!

Опубликовано на Java Code Geeks с разрешения Марка Нидхэма, партнера нашей программы JCG . См. Оригинальную статью здесь: Neo4j Import: java.lang.IllegalStateException: смешивание указанных и неопределенных групповых принадлежностей в одном импорте не поддерживается

Мнения, высказанные участниками Java Code Geeks, являются их собственными.