1

我正在尝试使用以下查询将 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

4

1 回答 1

2

Neo4j 可以自动将各种字符串格式解析为时间瞬间(如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;
于 2020-05-29T02:55:50.933 回答