使用 nzload 上传具有两种不同日期格式的文件
Posted
技术标签:
【中文标题】使用 nzload 上传具有两种不同日期格式的文件【英文标题】:Using nzload to upload a file with two differing date formats 【发布时间】:2017-03-14 10:44:53 【问题描述】:我正在尝试从 Oracle 数据库中的表中将文件加载到 Netezza,该文件包含两种单独的日期格式 - 一个字段的格式为 DD-MON-YY 和第二个字段的格式为 DD-MON-YYYY hh24:MI:SS,NZLOAD 中是否有任何格式可以满足文件中两种不同的日期格式
谢谢 抢劫..
【问题讨论】:
您能否发布一些示例数据作为输入和预期输出 您可以规范化从 Oracle 导出的数据,也可以将数据加载为字符串并在加载到目标表之前对其进行转换。 【参考方案1】:如果你的文件是定长的,你可以使用zones
但是,如果它的字段被分隔,您可以使用一些预处理工具(如 sed)将所有日期/时间戳转换为一种标准格式,然后将输出通过管道传输到 nzload
。
例如,
1. 01-JAN-17
2. 01-JAN-2017 11:20:32
让我们将日期字段转换为相同的格式
cat output.dat |\
sed -E 's/([0-9]2)-([A-Z]3)-([0-9]2)/\1-\2-20\3/g' |\
nzload -dateStyle DMONY -dateDelim '-'
这里的sed表达式很简单,我们来分解一下
# looking for 2 digits followed by
# 3 characters and followed by
# 2 digits all separated by '-'
# elements are grouped with '()' so they can be referred by number
's/([0-9]2)-([A-Z]3)-([0-9]2)
# reconstruct the date using group number and separator, prefix 20 to YY
/\1-\2-20\3
# apply globally
/g'
在nzload
中我们也指定了日期的格式和它的分隔符。
现在我们必须根据不同的日期格式以及它们要转换的内容来修改正则表达式,这可能不是一个通用的解决方案。
【讨论】:
以上是关于使用 nzload 上传具有两种不同日期格式的文件的主要内容,如果未能解决你的问题,请参考以下文章