Kiln ドキュメント
ダウンロード

ドキュメントツール

データベース

PostgreSQL、MySQL、MariaDB、SQLite への接続、補完を使った SQL の実行、SELECT の結果の編集、SQL を確認してからのテーブル構造の変更について説明します。

Kiln では、ターミナルの横でデータベースツールを使えます。接続エクスプローラー、補完付きの SQL コンソール、編集できる結果グリッド、テーブル構造を編集するフォームがそろっています。適用するまで、データベースには何も書き込まれません。

デモ用ワークスペースで動かした Kiln
デモ用ワークスペースで動かした Kiln

接続する

ワークスペースインスペクターでデータベース(データベースアイコン)を選ぶか、タイトルバーのツールメニューからデータベースを選びます。接続を追加してから、テーブルまたは SQL コンソールを開きます。

Kiln は PostgreSQL、MySQL、MariaDB、SQLite に対応しています。識別子のクォートとメタデータの取得クエリは、データベースごとに専用のものを使います。接続のシークレットは Kiln の認証情報ストアに保存されます。

データベースツールを開いても、ワークスペースのルートは変わらず、エージェントが別のリポジトリに移動することもありません。

SQL を実行する

操作 方法
カーソル位置の文を実行する 実行または ⌘Enter
選択したテキストだけを実行する 選択してから実行または ⌘Enter
エディター内のすべての文を実行する すべて実行または ⌘⌥Enter

セミコロンは直前の文の一部として扱われます。文字列、コメント、クォートされた識別子の中にあるセミコロンでは、文は区切られません。空白だけ、またはコメントだけの選択範囲では何も実行されません。

SQL の補完

識別子や、エイリアスに続けてドットを入力すると候補が表示されます。⌃Space、⌥Esc、またはコンソールのコードアイコンで開くこともできます。⌘Space は、macOS がこのキーを Kiln に渡す場合に使えます。Spotlight の動作を Kiln が上書きすることはありません。

ヒント macOS では ⌃Space が入力ソースの切り替えに使われていることがあります。コードアイコンと ⌥Esc なら、Mac のショートカットを変えなくても使えます。

表示される候補は、カーソルの位置によって変わります。

コンテキスト 候補
FROM または JOIN の後 テーブルとスキーマ。テーブル名はスキーマ付きで挿入されます。
SELECT、WHERE、JOIN ... ON、UPDATE ... SET、INSERT のカラムリスト 参照しているテーブルのカラム。カーソルより後で定義されたエイリアスも含みます

接続先の SQL 方言に応じて、よく使う SQL のキーワードと関数名も候補になります。関数を挿入すると、カーソルは括弧の中に置かれます。

矢印キーまたはマウスホイールで選び、Tab または Enter で挿入し、Esc で閉じます。候補にポインタを合わせると、完全な名前とメタデータが表示されます。補完で SQL が実行されることはありません。

メタデータを最新に保つ

  • このコンソールで実行したスキーマ変更は、補完に自動で反映されます。
  • ほかの場所で変更した後は、更新アイコンを使います。
  • メタデータの読み込みに失敗しても、SQL はそのまま残ります。更新アイコンで再試行してください。

メタデータはバックグラウンドで読み込まれます。そのために、閉じた接続が開き直されることはありません。

補完が認識しないもの

補完はコンソールのセッションとは別にデータベースのカタログを読むため、TEMP オブジェクト、SQLite の ATTACH、MySQL の USE、PostgreSQL の search_path の変更は反映されません。永続的なテーブルにはスキーマ名を明示してください。CTE と派生テーブルのカラムは推論されず、それらのカラムを誤って示してしまうテーブルの候補は表示されません。キーワードと関数のリストは一般的な構文を対象としており、サーバー固有の拡張をすべて網羅するものではありません。

SQL の補完が、クエリのテキストやテーブルの行を外部の AI サービスに送ることはありません。

クエリ結果を編集する

対応している単一テーブルの SELECT では、セルをダブルクリックするか、Enter または F2 を押して値を変更できます。変更は変更を反映を選ぶまでローカルに留まります。元に戻すで変更を破棄します。

長い値には値のサイドバーを使います。別のセルを選んだり別のクエリを実行したりする前に、セルに反映でテキストを反映するか、リセットしてください。選択したセルをコピーすると、反映待ちの値も含まれます。

編集できる結果

編集できるのは、1 つの永続テーブルからカラムを直接取得した結果です。エイリアスやフィルターは使ってもかまいません。主キー、または NULL を許可しない一意キーのカラムをすべて含めてください。キーの名前が id である必要はありません。

次のような結果は読み取り専用になり、Kiln がその理由を表示します。

  • 結合、集計、計算カラム
  • 同じ元のカラムを 2 回選択している
  • ビューと一時テーブル
  • 行のキーが揃っていない結果
  • 生成カラム、バイナリ、未対応のカラム型

結果の編集は、PostgreSQL、SQLite、およびトランザクション対応の InnoDB テーブルを使う MySQL または MariaDB で動作します。行の挿入と削除には対応していないので、SQL を使ってください。

変更の適用方法

Kiln は、行のキーと、画面に表示されていた元の値を使って、独立したトランザクションで変更を書き込みます。変更した各行は、データベース内のちょうど 1 行に一致する必要があります。行が削除されていたり、ほかの人に変更されていたり、一意に特定できなかったりすると、トランザクション全体が失敗し、ローカルの変更は確認用に残ります。

書き込む前に、Kiln はテーブルをロックし、テーブルが同じものであることと、カラムとキーの定義を再確認します。クエリの後に構造が変わっていた場合は、クエリをもう一度実行してください。変更の適用によって、コンソールで明示的に実行した BEGIN がコミットされることはありません。

書き込みは成功したものの再読み込みに失敗した場合、Kiln は書き込みが保存されたことを伝え、古くなった結果を読み取り専用にします。変更を自動で再送信することはありません。

テーブル、カラム、インデックス

エクスプローラーでテーブルを右クリックすると、テーブルを開く、テーブルを編集…、テーブルを削除… が表示されます。テーブルを編集… を選ぶと、カラム、インデックス、DDL とテーブル名の変更をまとめた 1 つのダイアログが開きます。ビューは同じ構造ブラウザーで読み取り専用として開きます。

テーブルを開くと、そのタブでデータ、カラム、インデックス、DDL を切り替えられます。DDL は更新とコピーができます。

カラム

各カラムの行には、編集、名前の変更、削除の操作があります。カラムを追加では、名前、SQL の型、NULL の可否、任意の既定値を設定します。文字列の既定値には 'guest' のように SQL のクォートが必要で、CURRENT_TIMESTAMP は式として扱われます。生成カラムや IDENTITY カラム、主キーの削除には、DDL を手動で書く必要があります。

インデックス

インデックスには、キーのカラムが順番どおりに表示され、一意性、方式、完全な定義も確認できます。インデックスを追加するには、カラムを選び、その順序と方向を設定し、必要に応じて一意にします。式インデックス、部分インデックス、エンジン固有のインデックスは SQL コンソールで作成できます。主キーと制約に属するインデックスは、このフォームからは削除できません。

適用前に確認する

構造の変更はすべて SQLをプレビュー → 確認 → DBに適用の流れで行います。

  • フォームを開いたりプレビューしたりしただけでは、DDL は実行されません。
  • フィールドを編集すると、プレビューとその承認は取り消されます。
  • テーブルを削除するときは、正確なテーブル名の入力も求められます。
  • 開いているテーブルに未反映の行の編集があると、構造の変更はできません。
  • 操作が失敗しても、入力内容は残るので修正できます。

PostgreSQL はトランザクション内で変更を適用します。MySQL と MariaDB は単一の DDL 文を実行し、複数の文にまたがるロールバックはありません。SQLite では、属性を編集するとトランザクション内でテーブルを再構築します。値、インデックス、トリガー、依存するビューは保持され、失敗した場合はロールバックされます。依存するオブジェクトがあると、カラムやテーブルを削除できないことがあります。Kiln がそれらを断りなく削除することはありません。

終了と復旧

データベースへの書き込みが実行中の間、Kiln はタブ、ワークスペース、アプリを閉じません。タブが非表示であっても、書き込みが終わればこの制限は解除されます。

終了時に作業を残すと、反映待ちの値と書きかけのテキストがローカルに保存されます。再起動すると、それらは元のクエリと値とともに確認専用のセクションに表示され、コピー、エクスポート、削除ができます。再実行や再送信は一切行われません。変更を入力し直す前に、クエリを再実行して比較してください。

警告 ローカルの復旧ファイルにはデータベースの値が含まれることがあります。書き込み中に異常終了した場合は、もう一度適用する前に、データベースがすでにコミットしていないか確認してください。

Windows

データベースツールは Windows でも同じように動作します。ウィンドウを閉じるときは、macOS と同様に実行中のデータベースへの書き込みが終わるまで待ちます。