分析用のデータや処理結果としてDuckDBファイルを受け取っても、テーブルや列の構成が分からないと、どこから見ればよいか迷います。中身を少し確認したいだけなら、Pythonやデスクトップ版DuckDBを用意してSQL環境を作る前に、ブラウザで構造とデータを確認できると手早く状況をつかめます。
DuckDB Explorerは、.duckdb / .dbファイルを読み取り専用で開き、概要、テーブル・ビューのデータ、必要な列だけの分析、読み取り専用SQLを確認できるブラウザツールです。必要に応じてデータ辞書HTMLを保存したり、2つのDuckDBファイルの構造を比較したりもできます。ここでは、元DBを書き換えずに全体像から必要なデータへ絞って確認する流れを紹介します。
まず概要でDB全体の構成を確認する
最初に概要を見ると、schema、table、view、列数、推定行数、ファイルサイズ、DuckDBバージョンをまとめて確認できます。いきなり行データを開くより、どのschemaに何があり、規模の大きいtableがどれかを把握してから対象を選ぶ方が迷いにくくなります。
DuckDBでは分析用のtableだけでなくviewが含まれていることもあります。まずtableとviewの名前を眺め、目的に近そうなものを選びます。推定行数は全件を正確に数えるための表示ではなく、DBの規模をつかむための目安として使います。
- schema / table / view
- 列数・推定行数
- ファイルサイズ・DuckDBバージョン
テーブル・ビューを開き、必要な行と列へ絞る
一覧からtableまたはviewを選ぶと、データを100行ずつページングして確認できます。検索、列フィルタ、ソートを使って、目的の値がありそうな範囲へ絞ります。LIST / STRUCT / MAPなどの入れ子の値は詳細表示で中身を確認できます。
CSV / JSONへ保存するときは、現在表示しているページが対象です。巨大なrelation全体を一度にブラウザへ展開しないための仕様なので、全件変換の代わりではなく、確認した部分を手元へ残す用途に向いています。
列分析は、確認したい列だけ実行する
値の傾向を知りたい列が見つかったら、その列だけ分析を実行できます。NULL件数、ユニーク数の推定、数値の要約、日付範囲、文字列長、よくある値などを確認し、想定したデータが入っているかを見る手掛かりにします。
列分析は最初から全列を自動走査する機能ではありません。大きなDBでは列分析にもCPUやメモリを使うため、まず概要と数ページのデータを見てから、必要な列だけ実行する方が扱いやすくなります。
- NULL・ユニーク数の推定
- 数値要約・日付範囲・文字列長
- よくある値
追加調査は読み取り専用SQLで行う
一覧だけでは確認しにくい絞り込みや集計が必要な場合は、SQL画面でSELECT / WITH / VALUES / SHOW / DESCRIBE / DESC / EXPLAINを1文ずつ実行できます。書き込み、DDL、ATTACH、extension読み込み、環境変更、複数statementなどは実行前に拒否され、DB自体もread-onlyで開かれます。
SELECT系の結果は最大1,000行まで表示・保存されます。大量データを丸ごと抽出する用途ではなく、条件を絞って内容や集計結果を確認するために使うと分かりやすいです。SQL履歴は現在のセッション内だけに保持され、別のDBを開くと消えます。
構造を残したいときはデータ辞書、差を見たいときはDB構造比較を使う
DBの構成を後から見返したい場合は、schema、table、view、列定義、view SQL、現在のセッションで実行した列分析などをデータ辞書HTMLとして保存できます。テーブルの行データそのものは含みませんが、列分析で「よくある値」を実行している場合は、その値がレポートへ含まれることがあります。外部共有前には内容を確認してください。
2つのDuckDBファイルの違いを見たい場合は、schema / table / view / 列定義 / view SQL / 推定行数の差を構造比較できます。これは行データを1件ずつ比べて追加・更新・削除を検出するdiffではありません。データそのものの差を調べたい場合は、目的に合ったSQLなど別の方法が必要です。
手順
- DuckDB Explorerを開き、.duckdb / .dbファイルを選択するかドラッグ&ドロップします。
- 概要でschema、table、view、列数、推定行数、ファイルサイズを確認し、DB全体の構成をつかみます。
- 一覧から確認したいtableまたはviewを開き、検索・列フィルタ・ソートで対象の行と列へ絞ります。
- 値の傾向を知りたい列だけ列分析を実行し、NULL、ユニーク数の推定、数値・日付・文字列の傾向などを確認します。
- 追加の絞り込みや集計が必要なら、SQL画面で読み取り専用SQLを1文ずつ実行します。
- 必要な場合だけ、現在表示中のページやSQL結果をCSV / JSONとして保存します。
- DB構造を残すならデータ辞書HTMLを保存し、別DBとの差を見るなら構造比較を実行します。
DuckDB Explorer
DuckDBファイルを端末内で開き、構造・データ・読み取り専用SQL・DB比較まで確認できます。
注意点
- スキーマが分からないDBでは、最初に行データを追うよりOverviewでtable / viewと規模を把握してから対象を開くと探しやすくなります。
- 大きなDBや重いviewでは検索・列分析・比較にCPUやメモリを使うため、確認したい範囲を先に絞ってから実行します。
- データ辞書HTMLにはテーブル行は入りませんが、実行済み列分析の「よくある値」が含まれる場合があります。共有前に内容を確認してください。
- DuckDBのバージョン差やoptional extensionに依存するDBは、ブラウザ版では開けない場合があります。
よくある質問
DuckDBファイルを編集できますか?
いいえ。DuckDB Explorerは読み取り専用でDBを開きます。書き込みSQLやDDLなどは実行前に拒否し、元ファイルを書き換えません。
SQLは自由に実行できますか?
読み取り専用の範囲に限定されています。SELECT / WITH / VALUES / SHOW / DESCRIBE / DESC / EXPLAINを1文ずつ実行でき、SELECT系の表示・保存結果は最大1,000行です。
テーブル全体をCSVやJSONへ保存できますか?
データ閲覧からのCSV / JSON保存は現在表示中のページだけが対象です。巨大relation全体を一度にブラウザへ展開しないための仕様です。
2つのDBの行データまで比較できますか?
行単位のdiffは行いません。比較対象はschema、table、view、列定義、view SQL、推定行数などの構造です。
DuckDBファイルやSQLはサーバーへ送られますか?
いいえ。選択したDBファイル、検索文字列、フィルタ、SQL、SQL履歴、クエリ結果はアプリから外部サーバーへ送信されません。実行時CSPも外部接続を許可しない構成です。