在Memgraph中使用LOAD CSV和date()函数处理空值问题
解决Memgraph导入CSV时日期格式错误的问题
要处理endDate列的空值和格式错误,同时保留所有记录,你可以用Memgraph的TRY()函数来捕获转换异常:
方案1:将非法/空值设为NULL(推荐)
这种方式会保留合法日期的date类型,非法值设为NULL,不会中断导入流程:
LOAD CSV FROM "file:///imports/mydata.csv" WITH HEADER AS row CREATE (c: Thing { id: row.id, endDate: TRY(date(row.endDate)) })
TRY()函数会尝试执行date(row.endDate)转换,成功则返回解析后的日期,失败(空值或格式错误)则返回NULL,所有记录都会被正常创建。
方案2:标记错误值为特定字符串(可选)
如果需要明确标记错误的日期值,可以用CASE语句自定义结果(注意:这会让endDate字段同时存在date和字符串类型,不推荐用于后续日期相关查询):
LOAD CSV FROM "file:///imports/mydata.csv" WITH HEADER AS row CREATE (c: Thing { id: row.id, endDate: CASE WHEN TRY(date(row.endDate)) IS NOT NULL THEN date(row.endDate) ELSE "invalid_date" END })
补充说明:你数据里的20231008(YYYYMMDD格式)和2023-10(YYYY-MM格式)其实符合Memgraph支持的日期规范,date()函数可以正常解析,主要需要处理的是空值和其他非标准格式的内容。
内容的提问来源于stack exchange,提问作者CharlesTheMan
相关产品推荐
相关产品推荐

