sql >> データベース >  >> RDS >> SQLite

SQLiteクエリ結果を列ヘッダー付きの列としてフォーマットする

    デフォルトでは、SQLiteコマンドラインシェルに接続してクエリを実行すると、結果はパイプで区切られたリストとして返されます。

    結果に列名が含まれていないことに気付いたかもしれません。これは、特にクエリが多くの列を返した場合に、結果を読み込もうとすると混乱を招く可能性があります。

    幸い、出力をフォーマットして、列ヘッダー付きの列として表示されるようにする簡単な方法があります。

    デフォルトの出力

    例として、SQLiteコマンドラインインターフェースがデフォルトでクエリ結果を出力する方法を次に示します。

    SELECT * FROM Products;

    結果:

    1|Widget Holder|139.5
    2|Widget Opener|89.7
    3|Widgets - 6 Pack|374.2
    4|Blue Widget|63.0

    したがって、列ヘッダーはなく、パイプで区切られたリストとして表示されます。

    列ヘッダーの追加

    各列に列名を追加するには、.headers onを使用します 。

    .headers on
    SELECT * FROM Products;

    結果:

    ProductId|ProductName|Price
    1|Widget Holder|139.5
    2|Widget Opener|89.7
    3|Widgets - 6 Pack|374.2
    4|Blue Widget|63.0

    .headers offを使用すると、ヘッダーを無効にできます 。

    結果を列としてフォーマットする

    .mode columnを使用することもできます 結果を列としてフォーマットします。

    .mode column
    SELECT * FROM Products;

    結果:

    ProductId   ProductName    Price     
    ----------  -------------  ----------
    1           Widget Holder  139.5     
    2           Widget Opener  89.7      
    3           Widgets - 6 P  374.2     
    4           Blue Widget    63.0      

    デフォルトの形式に戻す必要がある場合は、.mode listを使用できます。 。

    列幅の変更

    前の例では、製品名の1つが切り捨てられていることに気付くかもしれません。これは、列の幅よりも広いためです。

    デフォルトでは、各列の幅は、列ヘッダー名とデータの最初の列の幅に応じて1〜10文字です。幅が広すぎて列に収まらないデータは切り捨てられます。

    ただし、.widthは使用できます 列を特定の幅に設定するdotコマンド。

    3番目の製品が切り捨てられないように、前の例を修正する方法は次のとおりです。

    .width 0 16 0
    SELECT * FROM Products;

    結果:

    ProductId   ProductName       Price     
    ----------  ----------------  ----------
    1           Widget Holder     139.5     
    2           Widget Opener     89.7      
    3           Widgets - 6 Pack  374.2     
    4           Blue Widget       63.0      

    なぜ最初と3番目の列をゼロに設定したのか疑問に思われるかもしれません。

    0の値を使用する 実際に列を(特定のポイントまで)自動調整します。 0を指定する 列を3つの数値の大きい方に設定します。 10、ヘッダーの幅、およびデータの最初の行の幅。

    私の場合、これは1列目と3列目では正常に機能しますが、2列目では機能しません。したがって、その列を16に設定しました (これは、3番目の製品が使用する文字数です)。

    デフォルトにリセット

    SQLiteのデフォルト(つまり、列ヘッダーのないパイプで区切られたリスト)を使用するために出力を一時的にリセットする必要がある場合は、新しいターミナルウィンドウを開いて、そこからコマンドを実行できます。この場合、SQLiteはデフォルト設定を使用します。

    または、現在のターミナルウィンドウをリセットしてデフォルト設定を使用する場合は、いつでも次を使用できます。

    .headers off
    .mode list
    .separator "|"

    この場合、.separatorを追加しました 以前にセパレータを変更した場合に備えて、ドットコマンド。

    疑問に思われる場合は、はい、.separator ", "を使用できます。 結果をコンマ区切りのリストとして出力します。

    列設定を保持する

    前述のように、SQLiteに接続するために新しいターミナルウィンドウを開くたびに、クエリはSQLiteのデフォルト形式(パイプで区切られたリスト)に戻ります。

    SQLiteに接続するたびに上記のコマンドを再入力する必要がないように、.sqlitercにコマンドを入力できます。 ファイル。

    たとえば、空白のテキストファイルを開き、次のように入力します。

    .mode column
    .headers on

    ファイルを.sqlitercとして保存します ユーザーのホームディレクトリに移動し、SQLiteは接続するたびにそれを使用します。

    たとえば、ユーザーのホームディレクトリが / Users / bartの場合 、次に、そのディレクトリ内に配置して、 /Users/bart/.sqlitercに配置します。 。

    これは隠しファイルであるため、システムによっては確認などを求めるさまざまなプロンプトが表示される場合があります。ユーザーのホームディレクトリに保存されるまで、プロンプトに同意するだけです。


    1. HubSpotODBCドライバー

    2. SQL列の区切り値を複数の行に分割する

    3. SQL Server –sp_spaceusedの内部を分析します

    4. SQLliteデータベースをGoogleドライブアプリフォルダにバックアップ/復元します