猫とコード

化学メーカーでweb開発している猫大好きエンジニアの備忘録です。

VerticaでSelectでPrimaryKeyを確認する

やりたいこと->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;