<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用awk統計表中值為null的項目

    【需求】
        在項目測試階段,需要將所有表中值為null的字段抽取出來并進行統計。
    【Solution】
        由于DB2部署在AIX系統上,可以在shell環境下編寫awk腳本程序對表掃描,抽取出對象字段。
    【shell程序】
    getNullItem.sh

    #! /usr/bin/ksh

    db2 connect to D3703H0 user d3703bth using d3703bth
    db2 set current schema = DB2I3703

    echo `date` > Output
    for i in `cat tablelist`; do
       db2 "describe table "$i | grep "はい"> itemIn.txt
       awk 'BEGIN{ printf ("select ") > "sqlOut" }{ printf ("count(*) - count(%s) as %s件數,", $1, $1)>> "sqlOut" }' itemIn.txt
       echo "count(*) from "$i >> sqlOut
      
       echo $i >> Output
       db2 `cat sqlOut` >> Output
    done
    echo `date` >> Output
    -------------------------------------------------------------------------
    上述程序中,cat tablelist是顯示保存于文本文件tablelist中的表名,如下:
    【tablelist】
    T37A00F1
    T37A00F2
    T37A00F5
    T37A00M9
    T37A00MB
    T37A00MC
    T37A00MD
    T37A00ME
    T37A00MF
    T37A00MG
    ......

    最后,Output文件里的輸出如下所示:
    【Output】

    Mon Feb 2 17:11:08 JST 2009
    T37A00F1

    HU1N6件數   KA4ZS件數   KA4ZT件數   RE0BK件數   KA4ZN件數   SI0D2件數   SI2UD件數   KI02F件數   KO00N件數   KO01A件數   11        
    ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
              0           0           0           0           0           0           0           0           0           0          31

      1 レコードが選択されました。

    T37A00F2

    HU1N6件數   HU1MT件數   HU1OK件數   4         
    ----------- ----------- ----------- -----------
              0           0           0           0

      1 レコードが選択されました。

    T37A00F5

    1         
    -----------
              0

      1 レコードが選択されました。

    T37A00M9

    SI2B9件數   KA08P件數   MI0H4件數   TO19V件數   SI44Q件數   SI0X6件數   7         
    ----------- ----------- ----------- ----------- ----------- ----------- -----------
              0           0           0           0           0           0           0

      1 レコードが選択されました。

    T37A00MB

    1         
    -----------
           1911

      1 レコードが選択されました。
    -------------------------------------------------------------------------
    【awk程序】
    processOutput.awk

    #!/bin/awk -f

    BEGIN {
      #テーブル名
      tableName = "";
      #件數出力行の計數
      counter = 0;
      #項目名Array
      itemName[1] = "";
    }
    {
      if (NR == 1) {
        print "GAIN DBテーブルにはNULLを含める項目がまとめて表示:" > "Output2";
        print $0, "\n\n" >> "Output2";
      } else if (match($0, /:/) != 0) {
        print $0 >> "Output2";
      } else {
        if (match($1, /T37A00/) != 0) {
          #テーブル名取得
          tableName = $1;
        }
       
        if (match($1, /件數/) != 0) {
          #項目名取得
          for (i = 1; i <= NF - 1; i ++) {
            itemName[i] = $i;
          }
        }
       
        if (NR == 8 * counter + 6) {
          #件數値取得処理
          for (i = 1; i <= NF - 1; i ++) {
            if ($i != 0) {
              hasValue = 1;
              break;
            }
          }
         
          if (hasValue == 1) {
            printf "%s\n\n", tableName >> "Output2";
            for (i = 1; i <= NF - 1; i ++) {
              if ($i != 0) {
                printf "%s   ", itemName[i] >> "Output2";
              }
            }
            firstItem = 0;
            for (i = 1; i <= NF - 1; i ++) {
              if ($i != 0) {
                if (firstItem == 0) {
                  printf "\n----------  " >> "Output2";
                  firstItem ++;
                } else {
                  printf "----------  " >> "Output2";
                }
              }
            }
            firstItem = 0;
            for (i = 1; i <= NF - 1; i ++) {
              if ($i != 0) {
                if (firstItem == 0) {
                  printf "\n%9s   ", $i >> "Output2";
                  firstItem ++;
                } else {
                  printf "%9s   ", $i >> "Output2";
                }
              }
            }
            print "\n\n" >> "Output2";
          }
         
          hasValue = 0;
          counter ++;
        }
      }
    }
    ------------------------------------------------------------------------
    輸出結果如下:
    【Output2】

    GAIN DBテーブルにはNULLを含める項目がまとめて表示:
    Mon Feb 2 17:11:08 JST 2009

    T37A00MF

    ME0A8件數  
    ---------- 
        14419  


    T37A00MG

    ME0A8件數   EE0QJ件數   KA4ZQ件數   ME0KS件數   HE0CE件數   SO0UD件數   TO1A6件數   HU1NL件數   HA0RM件數  
    ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ---------- 
         1888           2        1888        1888        1888        1888        1888        1888        1888  


    T37A00MW

    KU026件數   WA03J件數   HA01E件數   KE1NR件數   KA07B件數   TA10K件數   HA045件數  
    ----------  ----------  ----------  ----------  ----------  ----------  ---------- 
          294         294         294         294         294         294         294  


    T37A00S3

    KO1N6件數  
    ---------- 
         4252  


    T37A00S6

    HU1MJ件數   HU1MK件數   HU1ML件數   HU1MM件數   HU1MN件數   AA01A件數   SI0D2件數   SI2UD件數  
    ----------  ----------  ----------  ----------  ----------  ----------  ----------  ---------- 
         1795        1795        1795        1795        1795        1795        1789        1789  

    posted on 2009-04-24 13:56 koradji 閱讀(683) 評論(0)  編輯  收藏 所屬分類: awk


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    db2

    dos

    Groovy

    Hibernate

    java

    WAS

    web application

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品久久网午夜| 黄色网站软件app在线观看免费| 国产高潮流白浆喷水免费A片 | 精品一区二区三区无码免费视频 | 一级成人a免费视频| 毛片a级毛片免费播放下载| 亚洲精品高清久久| 乱淫片免费影院观看| 国产片AV片永久免费观看| 亚洲第一精品福利| 国产无限免费观看黄网站| 国产91久久久久久久免费| 豆国产96在线|亚洲| 四虎永久在线精品免费网址| 99久久婷婷国产综合亚洲| 午夜免费1000部| 91亚洲一区二区在线观看不卡 | 亚洲国产高清在线一区二区三区 | 91免费国产精品| 男人天堂2018亚洲男人天堂| 日本最新免费不卡二区在线| 无码的免费不卡毛片视频| 亚洲av无码无在线观看红杏| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲综合国产一区二区三区| 一级特黄录像视频免费| 亚洲人成网亚洲欧洲无码久久| 久9热免费精品视频在线观看| 亚洲最大黄色网站| 成人免费视频国产| 免费无码作爱视频| 亚洲一区二区影视| 亚洲AV无码乱码在线观看性色扶 | 亚洲色偷偷av男人的天堂| 天天看片天天爽_免费播放| 一级一看免费完整版毛片| 久久亚洲春色中文字幕久久久| 国产一卡二卡四卡免费| 偷自拍亚洲视频在线观看99| 亚洲日本在线观看| 亚洲av无码不卡私人影院|