我正在尝试使用以下查询将csv文件加载到neo4j中:
:auto
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS row
MERGE (news:newsID {newsID: row.id})
ON CREATE SET
news.title = row.title,
news.creation_date = row.creation_date,
news.content = row.content;
我想将creation_date
转换为日期时间我可以使用类似的方法做到这一点:
WITH apoc.date.parse("2019-3-8 12:10:11", "ms", "yyyy-MM-dd HH:mm:ss") AS ms
RETURN datetime({epochmillis: ms}) as cdate
但是我不能在LOAD CSV
设置部分中使用它。如何使用apoc.date.parse
中的LOAD CSV
和datetime转换字段?
Neo4j可以自动解析各种string formats to temporal instants(例如datetime
)。您只需要使用支持的字符串格式。
尽管不支持您的示例字符串(“ 2019-3-8 12:10:11”),将日期和时间之间的空格字符替换为“ T”是可行的。
例如,尝试以下操作:
RETURN datetime("2019-3-8T12:10:11");
因此,只要您的creation_date
属性值具有受支持的格式,这将起作用:
:auto
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS row
MERGE (news:newsID {newsID: row.id})
ON CREATE SET
news.title = row.title,
news.creation_date = datetime(row.creation_date),
news.content = row.content;
或者,如果要保留现有的CSV文件,并假设其creation_date
字符串仅包含一个空格字符,则可以执行此操作:
:auto
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS row
MERGE (news:newsID {newsID: row.id})
ON CREATE SET
news.title = row.title,
news.creation_date = datetime(REPLACE(row.creation_date, ' ', 'T')),
news.content = row.content;