如何在加载到 Oracle 之前相应地格式化 csv 文件 table

How to format accordingly a csv file before loading to an Oracle table

我有以下 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

它包含 table 名称、成功的行、start_time 和 end_time。 (从 unix 日志中解析)

我想对其进行相应的格式化,以便像这样加载到 Oracle table 中:

enter image description here

如何格式化??我怎样才能相应地编辑日期以便加载?

例如,期望的结果是:

 echo "$Table_name,$Success_rows,$DAY/$MONTH/$YEAR $TIME_START,$DAY/$MONTH/$YEAR $TIME_END">> load.txt

非常感谢!

使用 awk 将 Unix 日期替换为 DAY/MONTH/YEAR 格式。

awk 'BEGIN { OFS=","; FS=","} {split(,a," ");split(,b," ")}
{=a[3]"/"a[2]"/"a[5]" "a[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列拆分成一个数组,并提取出具体的元素。

无需预处理。假设您将使用 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')"
...

More info on format models