我有以下csv文件:
xxxx@xxx:~/Prod/Jcs/BIN/Dash_PPLP/load/test$ cat extraction_LIA.csv
PPL_LIABILITY,2468705,Fri Sep 01 06:56:41 2017,Fri Sep 01 06:58:33 2017
它包含表名,行成功,start_time和end_time。 (从unix日志解析)
我想相应地对其进行格式化,以便可以加载到这样的Oracle表中:
我怎么格式化?我怎样才能相应地编辑日期以便加载?
例如,期望的结果将是:
echo "$Table_name,$Success_rows,$DAY/$MONTH/$YEAR $TIME_START,$DAY/$MONTH/$YEAR $TIME_END">> load.txt
非常感谢你!
答案 0 :(得分:1)
使用awk以DAY/MONTH/YEAR
格式替换Unix日期。
awk 'BEGIN { OFS=","; FS=","} {split($3,a," ");split($4,b," ")}
{$3=a[3]"/"a[2]"/"a[5]" "a[4];$4=b[3]"/"b[2]"/"b[5]" "b[4]}
{print}' extraction_LIA.csv >load.txt
格式化记录:
PPL_LIABILITY,2468705,01/Sep/2017 06:56:41,01/Sep/2017 06:58:33
注意:此处使用awk的split
函数将第3列和第4列拆分为数组,并提取特定元素。
答案 1 :(得分:1)
无需预处理。假设您将使用sqlldr,并且START_TIME和END_TIME列是DATETIME数据类型(如果不是,它们应该是),使用正确的日期数据格式模型构建sqlldr的控制文件:
...
start_time date "to_date(start_time, 'DY MON DD HH24:MI:SS YYYY')",
end_time date "to_date(end_time, 'DY MON DD HH24:MI:SS YYYY')"
...