从CSV文件(SQL)导入时,AsterixDB无法导入日期时间

7tofc5zh  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(152)

我正在尝试使用AsterixDB从CSV文件加载数据库。目前,它只能使用string、int和double字段。但是,CSV文件中有一列是DateTime格式。目前我将它们作为字符串导入,这很好用,但我希望将它们作为SQL DateTime数据类型导入。当我尝试更改架构并重新导入时,出现以下错误:

ERROR: Code: 1 "org.apache.hyracks.algebricks.common.exceptions.NotImplementedException: No value parser factory for fields of type datetime"

所有条目都是02/20/2010 12:00:00 AM,我知道这与Asterix数据模型指定的格式不完全一致,但是,我尝试了一个格式正确的测试行,错误仍然存在。
这是否意味着AsterixDB在批量导入时不能解析DateTime?如果是这样,我该如何解决这个问题?
任何帮助都将不胜感激。

ttygqcqt

ttygqcqt1#

好的,经过和同事们的讨论,我们认为AsterixDB目前在批量导入时不支持DateTime解析,我们的解决方案是将解析内置到查询中,然后将数据集中的每个条目都插入到查询中。
我们使用了以下查询:

upsert into csv_set (
  SELECT parse_datetime(c.Date_Rptd, "M/D/Y h:m:s a") as Datetime_Rptd,
  parse_datetime(c.Date_OCC, "M/D/Y h:m:s a") as Datetime_OCC,
  c.*
  FROM csv_set c
);

正如你所看到的,我们使用AsterixDB时态函数库中的parse_datetime函数解析字符串。这个查询故意不删除字符串格式的DateTimes列,尽管如果你的应用程序需要的话,这会非常简单。如果有人有更好或更优雅的解决方案,请随时添加到这个线程中!

相关问题