我刚遇到一个需要加载数据的场景:
' 2014-12-24 13:59:10:060606066'
Teradata表中的数据类型为Timestamp 你可以看到毫秒格式有9位数,有没有办法加载这些数据 或者Teradata根本不支持它。
现在我删除了最后3位数字,使其像“2014-12-24 13:59:10:060606'并加载到数据库中,但我将来可能需要处理它。
答案 0 :(得分:1)
也许您可以通过在表格中存储三个字段来实现此目的:
Message_Queue_Timestamp TIMESTAMP(6) NOT NULL
Message_Queue_Date DATE NOT NULL
Message_Queue_Seconds_From_Midnight FLOAT NOT NULL
使用dnoeth的建议使用to_timestamp()
转换输入以在表中保留DBA友好的时间戳。这是Message_Queue_Timestamp
。
然后将传入的时间戳分为两个字段:Message_Queue_Date
和Message_Queue_Seconds_From_Midnight
。我最初建议将后者存储为DECIMAL(14,9)
,但后来实现为FLOAT
格式化/将其转换为Teradata中的TIME
更容易。这两个字段允许您保留数据库摄取的时间戳的精度,而不必将数据存储为字符串。
在ETL处理中,时间戳到秒的转换应该相当直接。希望这可以帮助。