Neo4j类型不匹配:映射键必须作为字符串给出,但是整数



我有一个整数值,我想保存为一个字符串值在Neo4j使用Cypher。

LOAD CSV WITH HEADERS FROM 'file:///nodes-addresses.csv' AS line 
CREATE (:Address line[0], address: line[1], name: line[2], countries: line[3], countries_codes: line[4], sourceID: line[5], valid_until: line[6], note: line[7]})

我已经看过Cypher手册,发现toString,但这仍然抛出一个错误。

Neo.ClientError.Statement.SyntaxError
Type mismatch: map key must be given as String, but was Integer (line 2, column 42 (offset: 108))
"CREATE (:Address {node_id: toString(line[0]), address: line[1], name: line[2], countries: line[3], countries_codes: line[4], sourceID: line[5], valid_until: line[6], note: line[7]})"

我在toString和其他示例或命令的内外添加了一个字符。
toString('x'+line[0]),'x'+toString(line[0]),toStr(line[0])
但没有一个奏效。

我应该如何在导入时将整数转换为字符串?

当您在LOAD CSV子句中指定WITH HEADERS时,CSV文件的第一行将被视为标题,并且返回的每个数据行都是映射而不是数组。

那么,如果你的数据文件的头行看起来像这样:

node_id,address,name,countries,countries_codes,sourceID,valid_until,note

那么你的代码应该看起来像这样(假设每个属性值都应该是一个字符串):

LOAD CSV WITH HEADERS FROM 'file:///nodes-addresses.csv' AS r 
CREATE (:Address {
address: r.address, name: r.name, countries: r.countries,
countries_codes: r.countries_codes, sourceID: r.sourceID,
valid_until: r.valid_until, note: r.note
})

或者,由于在本例中头名称和节点属性名称完全匹配,因此您可以使用do this:

LOAD CSV WITH HEADERS FROM 'file:///nodes-addresses.csv' AS r
CREATE (a:Address)
SET a = r

最新更新