やりたいこと->Select文でPKを含む構造表を出力する
Verticaのデータ確認をvsqlやDBeaverから自作のDB閲覧ツール(localのclassic asp)に切り替えてから,主キー含む構造表を確認したいことがありました.
出力したい形式
Vertica はv_catalog.columnsの「data_type 」で型名と大きさまでちゃんと出してくれて偉いです.
column_name | data_type | NULL許可 | PrimaryKey |
---|---|---|---|
列A | varchar(10) | NO | p |
列B | varchar(5) | ||
列C | numeric(18,0) | ||
… | … | … | … |
使用するシステムテーブル・列とSQL文
SystemTable | 列 | 内容・備考 |
---|---|---|
v_catalog.columns | column_name | 列の名前 |
〃 | data_type | 列の型(大きさ).小文字で出ますがDDL作成時は大文字にしないとエラーになる.varchar->VARCHAR |
〃 | is_nullable | NULL許可の場合[1]が入る |
PRIMARY_KEYS | constraint_type | 主キーの場合[p](主キーではない場合はnull) |
WHERE句のc.table_schema,c.table_nameを指定して絞込みます.
SELECT c.column_name ,data_type ,CASE WHEN c.is_nullable = 1 THEN '' ELSE 'NO' END AS 'NULL許可' ,IsNull(constraint_type,'') AS 'PK' FROM v_catalog.columns c LEFT JOIN PRIMARY_KEYS k ON c.column_name = k.column_name AND c.table_name = k.table_name AND c.table_schema = k.table_schema WHERE c.table_schema='schema' AND c.table_name='table' ORDER BY c.ordinal_position;