Oracle/テーブル一覧を件数と同時に表示するSQL のバックアップ(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Oracle/テーブル一覧を件数と同時に表示するSQL へ行く。
- 1 (2012-03-13 (火) 15:47:31)
- 2 (2012-03-13 (火) 15:47:41)
- 3 (2012-03-13 (火) 18:56:57)
- 4 (2014-02-06 (木) 10:58:53)
- 5 (2015-02-27 (金) 15:53:37)
テーブル一覧を件数と同時に表示するSQLは以下の通りです。
SQL版
SELECT TABLE_NAME, TO_NUMBER( EXTRACTVALUE( XMLTYPE( DBMS_XMLGEN.GETXML('SELECT COUNT(*) C FROM '||TABLE_NAME)) ,'/ROWSET/ROW/C')) COUNT FROM USER_TABLES WHERE TABLE_NAME NOT LIKE 'BIN$%' AND (IOT_TYPE != 'IOT_OVERFLOW' OR IOT_TYPE IS NULL) ORDER BY TABLE_NAME ;
PL/SQL版
DECLARE NUM_COUNT NUMBER; BEGIN FOR CUR IN (SELECT * FROM USER_TABLES) LOOP EXECUTE IMMEDIATE 'SELECT COUNT(*) INTO :NUM_COUNT FROM ' || CUR.TABLE_NAME INTO NUM_COUNT; DBMS_OUTPUT.PUT_LINE( CUR.TABLE_NAME || ' : ' || NUM_COUNT || '件'); END LOOP; END; /
Analyze直後の場合
Analyze直後であれば、NUM_ROWSに値が入ってくるので以下のSQLでも抽出可能です。
SELECT T.TABLE_NAME, T.NUM_ROWS , C.COMMENTS FROM USER_TABLES T, USER_TAB_COMMENTS C WHERE C.TABLE_NAME(+)=T.TABLE_NAME ORDER BY T.TABLE_NAME ;