【TPC-DS】处理数据的脚本


# 用0来替换第一个字段的NULL值,把^|替换成0|
# 用0来替换中间字段的NULL值, 把||替换成|0|
# 用0来替换最后一个字段的NULL值,把|$替换成|0
for s_f in `ls $DATA_DIR/*dat`
do
    echo "$s_f"
    i=1
    while [ `egrep '\|\||^\||\|$' $s_f |wc -l` -gt 0 ]
    do 
        echo $i
        sed 's/^|/0|/g;s/||/|0|/g;s/|$/|0/g' -i $s_f
        ((i++))
    done
done


#把date字段的0值替换成 0000-00-00
for s_f in $DATA_DIR/item.dat $DATA_DIR/store.dat $DATA_DIR/web_page.dat $DATA_DIR/web_site.dat $DATA_DIR/call_center.dat
do
# 处理第一、第二个date都是NULL的
sed 's/^\([A-Za-z0-9]*|[A-Za-z0-9]*\)|0|0|\(.*\)/\1|0000-00-00|0000-00-00|\2/' -i $s_f

# 处理第二个date是NULL的
sed 's/^\([0-9A-Za-z]*|[A-Za-z0-9]*|[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)|0|\(.*\)/\1|0000-00-00|\2/' -i $s_f

# 处理第一个date是NULL的
sed 's/^\([0-9A-Za-z]*|[A-Za-z0-9]*\)|0|\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}|.*\)/\1|0000-00-00|\2/' -i $s_f

done

相关