teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/08/30 22:33

投稿

Orlofsky
Orlofsky

スコア16419

answer CHANGED
@@ -2,4 +2,34 @@
2
2
 
3
3
  本題で、カラムの定義は [USER_TAB_COLUMNS](https://docs.oracle.com/cd/E57425_01/121/REFRN/GUID-7DAA74E5-E165-49C8-9D4B-5701C876C28B.htm)、
4
4
  カラムのコメントは [USER_COL_COMMENTS](https://docs.oracle.com/cd/E57425_01/121/REFRN/GUID-AE32625E-E063-4EA7-80D6-DC5729FE7EE6.htm) を参照します。
5
- コメントを列の別名とするときはダブルクォートで囲みましょう。
5
+ コメントを列の別名とするときはダブルクォートで囲みましょう。
6
+
7
+ 追記
8
+ データベースはOracleを前提として、
9
+ [通貨コード](https://qiita.com/Papageno/items/7c40c5c084aeda2d9f8c) のテーブル定義を利用。
10
+
11
+ Excelで1行目にコメントを使いたいものと想定。sqlplus から
12
+ --テーブル名は置換変数で
13
+ DEFINE tbl=CURRENCIES
14
+
15
+ SET HEADING OFF
16
+ SET PAGESIZE 0
17
+ SELECT DISTINCT
18
+ 'COLUMN ' || TC.COLUMN_NAME || ' HEADING "' || CM.COMMENTS || '"' AS "COLUMN"
19
+ FROM USER_TABLES TA
20
+ INNER JOIN USER_TAB_COLUMNS TC
21
+ ON TC.TABLE_NAME = TA.TABLE_NAME
22
+ INNER JOIN USER_TAB_COLUMNS TC
23
+ ON TC.TABLE_NAME = TA.TABLE_NAME
24
+ LEFT OUTER JOIN USER_COL_COMMENTS CM
25
+ ON CM.TABLE_NAME = TC.TABLE_NAME
26
+ AND CM.COLUMN_NAME = TC.COLUMN_NAME
27
+ WHERE
28
+ TA.DROPPED = 'NO' -- except trash box, since oracle10.1.0
29
+ AND TA.TABLE_NAME = '&&tbl'
30
+ ;
31
+ -- の結果をリダイレクト(sqlplusで再実行)
32
+ SET COLSEP ','
33
+ SPOOL &&tbl..csv
34
+ SELECT * FROM &&tbl ;
35
+ SPOOL OFF