我试图在运行Debian 11的机器上使用neo4j-admin导入工具将多个csv文件加载到新的数据库中。为了确保ID字段中没有冲突,我给出了每个节点和关系文件。然而,我得到这个错误:
org.neo4j.internal.batchimport.input.HeaderException: Group 'INVS' not found. Available groups are: [CUST]
这是超级令人沮丧的,因为我知道INV组肯定存在。我检查了所有使用ID空间的文件,它们都包含了它。
另一个奇怪的事情是,除了CUST和INV之外,还有更多的ID空格。感觉就像它试图在完成所有节点的加载之前加载关系。
下面是我搜索输入文件时看到的结果
$ grep -r -h "(INV" ./import | sort | uniq
:ID(INVS),total,:LABEL
:START_ID(INVS),:END_ID(CUST),:TYPE
:START_ID(INVS),:END_ID(ITEM),:TYPE
上面的一个来自我的$NEO4J_HOME/import/nodes
文件夹,另外两个在我的$NEO4J_HOME/import/relationships
文件夹。
有没有好的解决办法?还是我只是偶然发现了一个bug ?
编辑:这是我在$NEO4J_HOME目录下使用的命令:neo4j-admin import --force=true --high-io=true --skip-duplicate-nodes --nodes=import/nodes/.* --relationships=import/relationships/.*
的确,这样的事情将是伟大的,但我不认为这是目前可能的。
不管怎样,这似乎不是一个bug。我想这可能是一个想要的行为和/或一个尚未预见到的功能。
事实上,在关于正则表达式的文档中说:
Assume that you want to include a header and then multiple files that matches a pattern, e.g. containing numbers.
In this case a regular expression can be used
关于--nodes
命令的描述:
Node CSV header and data. Multiple files will be
logically seen as one big file from the
perspective of the importer. The first line must
contain the header. Multiple data sources like
these can be specified in one import, where each
data source has its own header.
因此,neo4j-admin import
似乎认为--nodes=import/nodes/.*
是找到第一个头的单个.csv
,因此出现错误。相反,如果有更多的--nodes
,则没有问题。