<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

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费A级毛片无码专区| 免费鲁丝片一级观看| 亚洲伦理中文字幕| 四虎免费影院4hu永久免费| 热久久这里是精品6免费观看| 亚洲免费在线观看视频| 又黄又爽的视频免费看| 84pao国产成视频免费播放| 亚洲熟妇无码av另类vr影视| 国产亚洲精AA在线观看SEE| 日本一区免费电影| 黄色免费在线网站| 精品久久久久久亚洲综合网| 暖暖日本免费在线视频| 中文字幕乱码一区二区免费| 亚洲色中文字幕在线播放| 亚洲国产成人精品无码区在线观看 | 中中文字幕亚洲无线码| 中文字幕精品亚洲无线码二区 | av无码国产在线看免费网站 | 视频免费在线观看| 亚洲欧美日韩久久精品| 久久久亚洲欧洲日产国码农村| 暖暖在线日本免费中文| 0588影视手机免费看片| a级在线观看免费| 黄色三级三级三级免费看| 亚洲va精品中文字幕| 久久精品国产精品亚洲色婷婷| 伊人久久亚洲综合影院 | 亚洲精品福利网站| 亚洲美女又黄又爽在线观看| 免费人成网站7777视频| 免费观看美女裸体网站| 国产成人yy免费视频| 免费A级毛片无码A∨中文字幕下载 | 亚洲美女一区二区三区| 亚洲AV无码精品色午夜在线观看| 四虎亚洲国产成人久久精品| 色视频色露露永久免费观看| 无码国产精品一区二区免费 |