将csv文件内容导入Neo4j数据库(import csv file content into Neo4j database)

我试图将一个csv文件导入到Neo4J中。 我遵循这个指南,并且我已经导入了一个包含数千个节点(用户)的文件,现在我试图导入这些节点之间的关系,但我继续讨论这个错误:

Input error: 'TYPE '

Caused by:'TYPE '

java.lang.IllegalArgumentException: 'TYPE '

at org.neo4j.csv.reader.Extractors.valueOf(Extractors.java:152)

at org.neo4j.unsafe.impl.batchimport.input.csv.DataFactories$DefaultRelationshipFileHeaderParser.entry(DataFactories.java:361)

我试图导入的csv文件如下所示:

ID,:START_ID,:END_ID,:TYPE

1,82513,82718,FRIEND_OF

2,48635,21154,FRIEND_OF

3,92784,96648,FRIEND_OF

4,55215,86714,FRIEND_OF

.......

为了导入它,我使用下面的命令:

neo4j-import --into ./ --nodes my_users.csv --relationships my_rels.csv

正如我之前所说的正确导入所有节点。

I'm trying to import a csv file into Neo4J. I'm following this guide and I've already imported a file containing thousands of nodes (users), now I'm trying to import relationships between these nodes but I keep getting this error:

Input error: 'TYPE '

Caused by:'TYPE '

java.lang.IllegalArgumentException: 'TYPE '

at org.neo4j.csv.reader.Extractors.valueOf(Extractors.java:152)

at org.neo4j.unsafe.impl.batchimport.input.csv.DataFactories$DefaultRelationshipFileHeaderParser.entry(DataFactories.java:361)

The csv file I'm trying to import looks like this:

ID,:START_ID,:END_ID,:TYPE

1,82513,82718,FRIEND_OF

2,48635,21154,FRIEND_OF

3,92784,96648,FRIEND_OF

4,55215,86714,FRIEND_OF

.......

And in order to import it I use the following command:

neo4j-import --into ./ --nodes my_users.csv --relationships my_rels.csv

which as I said before correctly imports all the nodes.

原文:https://stackoverflow.com/questions/42515848

更新时间:2019-12-30 02:02

最满意答案

看起来你的文件中有空格或制表符? 请删除它们。

如果它们都是相同的rel-type,你也可以提供它

在命令行中使用--relationships:FRIEND_OF 。

It seems you have trailing spaces or tabs in your file? Please remove them.

If it is all the same rel-type you can also provide it

on the command line with --relationships:FRIEND_OF.

2017-02-28

相关问答

你确认它与a和w匹配吗? 如果没有找到a和w一个或两个,则MERGE语句将不会创建任何内容。 尝试输出结果,而不是尝试MERGE 。 例如 LOAD CSV WITH HEADERS FROM "file:/home/quentin/.pfe/short_abstracts_fr0.csv" AS row

MATCH (a:article {title: row.article}), (w:word {stem: row.word})

RETURN a.article, w.word

如果

...

以下是肯定工作: USING PERIODIC COMMIT

LOAD CSV WITH HEADERS FROM "file:///orders.csv" AS row FIELDTERMINATOR ','

CREATE (:ORDERS {OORDERKEY : row.O_ORDERKEY , OCUSTKEY: row.O_CUSTKEY, OORDERSTATUS: row.O_ORDERSTATUS,OTOTALPRICE: row.O_TOTALPRICE, OORDERDAT

...

以下是有关如何使用Cypher LOAD CSV子句导入的一些提示。 要处理真正的大型数据导入任务,您可能需要查看neo4j-import工具。 处理不同数量的列不是问题,因为您可以将每个CSV文件行视为项集合。 您应该通过CSV文件导入数据2次。 在第一遍中,创建所有Person节点。 在第二遍中,匹配适当的节点,然后在它们之间创建关系。 为了大大加快第二次传递,您应首先创建索引或唯一性约束 (这将为您创建索引),以便按ID匹配Person节点。 我会假设: 每个Person的CSV文件中有一行

...

在我看来,你真的想要三层报价。 整个字符串是一个JSON字符串,您尝试将其保持完整,这意味着您要对其中的引号进行双引号。 然后你试图在已经双引号的字符串中引用一些文本。 这不受支持。 如果你有另一个角色,说'作为引用而不是我认为你可以有这样一个字符串看起来像: {"id": 1142347, "text": "That sounds \"muy fantastica,\" Debbie. Thanks for sharing!\n\n-- MichaelR, Community Manager,

...

默认情况下,只允许相对于Neo4j家中的import目录import 。 您应该将您的CSV移到那里并从该位置导入。 您还可以通过更改neo4j.conf文件中的某些值来查看更改导入目录 。 By default import is allowed only relative to the import directory in your Neo4j home. You should move your CSV there and import from that location. You ca

...

您不能更改活动的Neo4J实例的活动数据库。 企业版确实允许在不重新启动的情况下更改一些值; 在线文档列出了允许以这种方式更改的密钥,但dbms.active_database不在其中。 相反,你有几个选择。 你可以挂载一个/ conf目录 conf目录可以用完全覆盖默认值的配置文件填充。 它们不是由Neo4J生成的,你必须将整个neo4j.conf文件放在随后安装到容器中的目录中。 您可以在该文件中更改所需的任何值。 在用新文件更新映射目录之后,您需要弹出映像(或执行映像内neo4j的反弹)。

...

看起来你的文件中有空格或制表符? 请删除它们。 如果它们都是相同的rel-type,你也可以提供它 在命令行中使用--relationships:FRIEND_OF 。 It seems you have trailing spaces or tabs in your file? Please remove them. If it is all the same rel-type you can also provide it on the command line with --relation

...

有两个问题。 您的CSV文件中的逗号分隔符周围不能有多余的空格。 (另外,你应该在每一行的末尾删除额外的11个逗号)。 CSV文件头中的每个字段名称都必须与Cypher查询中的相应属性名称匹配。 目前,大多数名称都不同。 顺便说一句,在谈论Cypher查询时,术语“返回”几乎总是指RETURN子句。 您的问题与RETURN子句无关,实际上与数据创建有关。 [UPDATE] 此外,如果要将大量数据导入到全新的neo4j数据库中,则应考虑使用“ 导入”工具 。 它会比LOAD CSV快得多。 Ther

...

避免在LOAD CSV中急切加载。 它不尊重PERIODIC COMMIT。 请参阅Mark Needham的这篇文章 ,以获得详尽的解释。 Avoid eager loading in LOAD CSV. It doesn't respect PERIODIC COMMIT. See this article by Mark Needham for a thorough explanation.

您可能希望进行多次传递,否则可能会出现急切加载CSV数据的问题 也许你的条件有问题,如果你做了多遍,你也可以把它们改成一个简单的WHERE 喜欢这个: USING PERIODIC COMMIT 100000

LOAD CSV WITH HEADERS FROM "file:///export_conceptos_50000.txt" AS csvLine

FIELDTERMINATOR '\t'

MERGE (c:Concepto {nom: csvLine.concepto1_sin, cat

...