【问题标题】:Cypher can't take all properties from CSVCypher 无法从 CSV 获取所有属性
【发布时间】:2021-12-18 14:17:07
【问题描述】:

我尝试从 CSV 创建关系,但出现错误

Cannot merge the following relationship because of null property 
value for 'timestamp': (u)-[:WATCHED {timestamp: null}]->(m)

我不明白,CSV 不会遗漏任何属性

我的代码:

LOAD CSV WITH HEADERS FROM 
'https://www.dropbox.com/s/vmtjxr22q4fflr1/u.data.csv?dl=1' AS line 
FIELDTERMINATOR '|' MATCH(u:User{id:toInteger(line.id_user)}), 
(m:Movie{id:toInteger(line.id_item)}) WITH u,m, line MERGE (u)- 
[r:WATCHED{rating:toInteger(line.rating), 
timestamp:toInteger(line.timestamp)}]->(m)

你能帮帮我吗?

【问题讨论】:

    标签: csv cypher


    【解决方案1】:

    我下载了您的 CSV。它的标题如下:

    id_user|id_item|rating|timestamp 
    

    请注意,它在行尾有一个额外的空格字符。这会导致属性被称为timestamp ,因此,timestamp 将是null

    【讨论】:

    • 你是对的,我的错......我现在想像这样转换日期中的时间戳:date:datetime(toInteger(line[3])) 但我有这个错误:无效的呼叫签名对于 DateTimeFunction:提供的输入是 [Long(881250949)] 你能帮帮我吗?
    • 语法是datetime{epochseconds: ...}。如果您不使用标题,您还应该使用WITH line SKIP 1 丢弃第一行。所以查询如下:LOAD CSV FROM '...' AS line FIELDTERMINATOR '|' WITH line SKIP 1 RETURN datetime({epochseconds: toLong(line[3])})。如果答案对您有帮助,请接受并点赞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多