我正在尝试从 Oracle 数据库中的表中将文件加载到 Netezza,该文件包含两种单独的日期格式 - 一个字段的格式为 DD-MON-YY,第二个字段的格式为 DD-MON-YYYY hh24:MI :SS,NZLOAD中是否有任何内容可以满足文件中两种不同的日期格式
谢谢抢..
如果您的文件是固定长度的,则可以使用区域
但是,如果它的字段是分隔的,您可以使用一些预处理工具(如 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
指定了日期的格式及其分隔符。
现在我们必须根据不同的日期格式以及它们要转换的内容来修改正则表达式,这可能不是一个通用的解决方案。