Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 无法使用sourceID的null属性值合并节点。(ICIJ巴拿马文件数据)_Neo4j - Fatal编程技术网

Neo4j 无法使用sourceID的null属性值合并节点。(ICIJ巴拿马文件数据)

Neo4j 无法使用sourceID的null属性值合并节点。(ICIJ巴拿马文件数据),neo4j,Neo4j,我正在尝试将csv文件导入Neo4j DB,下面是csv文件的链接 我用来将CSV数据导入DB的查询是 USING PERIODIC COMMIT 10000 LOAD CSV FROM "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line MERGE (i:Intermediateries{name:line[1],internal_id:line[2]

我正在尝试将csv文件导入Neo4j DB,下面是csv文件的链接

我用来将CSV数据导入DB的查询是

USING PERIODIC COMMIT 10000
LOAD CSV FROM "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line
MERGE (i:Intermediateries{name:line[1],internal_id:line[2],address:line[3],valid_until:line[4],country_codes:line[5],countries:line[6],status:line[7],node_id:line[8],sourceID:line[9]})
查询产生以下错误:- 无法使用sourceID的null属性值合并节点


我找到了一些有用的资源,但是考虑到ICIJ的大小,执行它需要几个小时,有没有办法消除对NULL值的检查并优化查询?

是的,您可以轻松地筛选出sourceID为NULL的行

USING PERIODIC COMMIT 10000 LOAD CSV FROM  "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
WITH line where line[9] is not null
MERGE (i:Intermediateries{name:line[1],internal_id:line[2],address:line[3],
valid_until:line[4],country_codes:line[5],countries:line[6],status:line[7],node_id:line[8],sourceID:line[9]})
如果要导入这些节点,即使它们没有源ID,也可以使用coalesce

USING PERIODIC COMMIT 10000 LOAD CSV FROM  "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
WITH line,coalesce(line[9],"NoId") as sourceID
MERGE (i:Intermediateries{name:line[1],internal_id:line[2],address:line[3],
valid_until:line[4],country_codes:line[5],countries:line[6],status:line[7],node_id:line[8],sourceID:sourceID})
我会创建一个这样的查询,如果我导入了它,如果您有

如果没有apoc插件,则必须手动指定属性

USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM  "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
MERGE (i:Intermediateries{internal_id:line.internal_id})
ON CREATE SET i.name = line.name,i.address = line.address, i.valid_until = line.valid_until,
i.country_codes = line.country_code, i.countries = line.countries,i.status = line.status,i.node_id = line.node_id,
i.sourceID = line.sourceID,i.note = line.note

是的,您可以轻松筛选出sourceID为null的行

USING PERIODIC COMMIT 10000 LOAD CSV FROM  "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
WITH line where line[9] is not null
MERGE (i:Intermediateries{name:line[1],internal_id:line[2],address:line[3],
valid_until:line[4],country_codes:line[5],countries:line[6],status:line[7],node_id:line[8],sourceID:line[9]})
如果要导入这些节点,即使它们没有源ID,也可以使用coalesce

USING PERIODIC COMMIT 10000 LOAD CSV FROM  "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
WITH line,coalesce(line[9],"NoId") as sourceID
MERGE (i:Intermediateries{name:line[1],internal_id:line[2],address:line[3],
valid_until:line[4],country_codes:line[5],countries:line[6],status:line[7],node_id:line[8],sourceID:sourceID})
我会创建一个这样的查询,如果我导入了它,如果您有

如果没有apoc插件,则必须手动指定属性

USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM  "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
MERGE (i:Intermediateries{internal_id:line.internal_id})
ON CREATE SET i.name = line.name,i.address = line.address, i.valid_until = line.valid_until,
i.country_codes = line.country_code, i.countries = line.countries,i.status = line.status,i.node_id = line.node_id,
i.sourceID = line.sourceID,i.note = line.note

您使用的索引错误。索引从0开始,而不是从1开始。在给定的csv中还有一个标题行。因此,相应地编辑密码查询

将其更改为以下内容:

USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
MERGE 
(i:Intermediateries{name:line[0],internal_id:line[1],address:line[2],valid_until:line[3],country_codes:line[4],countries:line[5],status:line[6],node_id:line[7],sourceID:line[8]})

有关更多详细信息,请参阅官方文档-

您使用的索引错误。索引从0开始,而不是从1开始。在给定的csv中还有一个标题行。因此,相应地编辑密码查询

将其更改为以下内容:

USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "http://apps.dealopia.com/offshoreleaks/offshore_leaks_csvs-20170104/Intermediaries.csv" AS line 
MERGE 
(i:Intermediateries{name:line[0],internal_id:line[1],address:line[2],valid_until:line[3],country_codes:line[4],countries:line[5],status:line[6],node_id:line[7],sourceID:line[8]})

有关更多详细信息,请参阅官方文档-

问题仍然存在于查询中最后一个查询工作了一段时间,但返回错误。无法使用内部ID的null属性值合并节点这里的根本问题是无法合并具有null值的节点。例如,
MERGE(一个{key:value})
在值为null时总是不可能执行的。最后一个例子是
MERGE(a)SET a.key=value
。但是在这种情况下,我假设internal_id是中介的主要标识符,因此我们需要一些值。我强烈建议在导入之前清理数据,如在需要的地方添加内部id或删除这些行。如果不能做到这一点,那么COALESCE(line.internal_id,name)就可以使用名称作为internal_id。问题仍然存在于查询中。最后一个查询工作了一段时间,但返回错误。无法使用内部ID的null属性值合并节点这里的根本问题是无法合并具有null值的节点。例如,
MERGE(一个{key:value})
在值为null时总是不可能执行的。最后一个例子是
MERGE(a)SET a.key=value
。但是在这种情况下,我假设internal_id是中介的主要标识符,因此我们需要一些值。我强烈建议在导入之前清理数据,如在需要的地方添加内部id或删除这些行。如果不能做到这一点,那么COALESCE(line.internal_id,name)可以使用名称作为内部_id。