Neo4j 无法使用sourceID的null属性值合并节点。(ICIJ巴拿马文件数据)
我正在尝试将csv文件导入Neo4j DB,下面是csv文件的链接 我用来将CSV数据导入DB的查询是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]
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。