使用 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 上传具有两种不同日期格式的文件的主要内容,如果未能解决你的问题,请参考以下文章

在同一页面上使用两个具有两种不同日期格式的日期选择器

处理具有混合日期格式的 Pandas 数据框列

nzload - 当第一列与表元素不匹配时,skiprows 不起作用

如何将日期字符串转换为具有不同日期格式的时间戳?

如何让我的模型接受两种不同的日期格式?

我想比较具有不同日期格式的两列