我有一个整数值,我想保存为一个字符串值在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