これは試行錯誤の途中経過です。まとめ→http://d.hatena.ne.jp/irof/20100108/p2
-
-
- -
-
PL/SQLは嫌だとか、古いバージョンで使えないとか、ネットワークから隔離されているとかの逃げ道に、SQLを作るSQLを発行して、作ったSQLを発行する手があります。1テーブルだけの場合は、WHEREを追加してください。
SELECT DECODE(COLUMN_ID, '1', 'SELECT ') "SELECT", COLUMN_NAME "COLUMN", DECODE( COLUMN_ID, (MAX(COLUMN_ID) OVER(PARTITION BY TABLE_NAME)), ' FROM ' || TABLE_NAME || ';', ' || '','' || ') "TABLE" FROM USER_TAB_COLUMNS ORDER BY TABLE_NAME, COLUMN_ID;
このSQLを実行すると、こんな感じでテーブルの全列を「,」で繋げるSQLが出来ます。
SELECT COLUMN TABLE -------------- ---------------- ---------------- SELECT COLUMN1 || ',' || COLUMN2 || ',' || COLUMN3 || ',' || COLUMN4 || ',' || COLUMN5 FROM TABLE1; SELECT COLUMN1 || ',' || COLUMN2 || ',' || COLUMN3 FROM TABLE2; SELECT COLUMN1 || ',' || COLUMN2 || ',' || COLUMN3 || ',' || COLUMN4 FROM TABLE3;
後は作ったSQLを発行すればCSV形式の検索結果が得られます。手っ取り早さや制限の少なさでではこちらが優勢、ただしテーブル数が多くなるとちょっと面倒な作業が増えます。環境とか対象テーブル数とか諸々の条件次第でやり方は選択すると良いです。
と思ったけど、面倒な作業の部分はクリアできました。逃げ道のつもりが本命に化けてしまった感じ。