導入
SQLiteでデータを検索する際、デフォルトの出力形式ではカラムが重なったり、値が長すぎて表示が崩れたりして「読みにくい」と感じたことはありませんか?特にログの確認や開発中のデータチェックにおいて、視認性は作業効率に直結します。本記事では、SQLiteの.mode columnコマンドと組み合わせて、カラムごとの表示幅を自在に制御できる.widthコマンドの使い方を解説します。
基礎知識
SQLiteのコマンドラインインターフェース(CLI)には、出力形式を切り替える.modeコマンドが存在します。デフォルトはlistモードですが、.mode columnを実行することで、表形式(カラム形式)での表示が可能になります。しかし、このモードだけではカラム幅が固定されがちです。そこで登場するのが.widthコマンドです。このコマンドを使うと、各列の表示幅を文字数単位で細かく調整し、画面レイアウトを最適化することができます。
実装/解決策
.widthコマンドの基本構文は「.width 列1の幅 列2の幅 …」です。引数には半角文字換算の数値をスペース区切りで指定します。
重要なポイントは以下の3点です。
1. 指定しなかった列はデフォルト幅(通常10文字)が適用される。
2. 表示幅を超えたデータは切り捨てられる(データ自体は保持される)。
3. 負の値を指定すると、右詰め表示が可能になる。
サンプルプログラム
以下の手順で、実際にターミナル上で動作を確認してください。
— 1. まずカラムモードに切り替える
.mode column
— 2. カラム幅を個別に設定(1列目: 5文字、2列目: 15文字)
— 負の値を指定して右詰めに設定することも可能です
.width 5 -15
— 3. 設定を反映してクエリを実行
— この設定により、1列目は5文字幅で左詰め、2列目は15文字幅で右詰め表示されます
SELECT id, user_name FROM users;
— 4. 設定をリセットしたい場合(すべてデフォルトに戻す)
.width 0 0
応用・注意点
現場のDBAとして注意すべき点は、「表示幅の切り捨て」です。例えば幅を4文字に設定した場合、”Administrator”というデータは”Admi”としか表示されません。データの中身を確認しているつもりが、一部しか見えていないために誤解を招くことがあります。
また、.widthコマンドの設定は現在のセッション中のみ有効です。SQLスクリプトを自動実行する場合などは、スクリプトの冒頭で必ず.modeと.widthをセットで記述する運用にしましょう。もし数値が足りない場合は、一番右のカラムがデフォルト幅になるため、列数が多いテーブルでは「全ての列を指定する」癖をつけておくのが、トラブルを避けるコツです。

コメント