SQLite ファイルビューアー
データ変換
読み込み中
ツールを読み込んでいます
ツールのコードは開いたときにのみ読み込まれます。
このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。
このツールについて
小さな単独の SQLite 3 データベースを、内容を送信せず元のファイルも変更せずに確認できます。.sqlite、.sqlite3、.db ファイルを開き、保存されたテーブル・インデックス・ビュー・トリガーの定義と、対応する通常のテーブルの行を表示します。自由入力 SQL ではなく、識別子を引用して LIMIT/OFFSET と NOT INDEXED を付けた SELECT を生成します。実際の格納クラスのラベルで整数、実数、文字列、バイナリ、null を区別し、両端を含む行範囲を型付き CSV または JSON に出力できます。固定バージョンの sql.js と WASM は同一オリジンの資産として同梱し、ファイルを開く時だけ起動します。データと結果は永続保存しません。CSV/JSON 入力のクエリには別のローカル SQL ワークベンチを使ってください。
主な用途
- アプリから書き出したデータベースの列、宣言型、既定値、主キーの位置、インデックスを確認して、目的のレコードを持つ通常のテーブルを見つける。
- 大きな整数 ID、Unicode、null、バイナリの型を保ったまま、表計算ソフトの型推測に頼らずローカルデータの一部を確認する。
- 照合や移行調査のために最大 1,000 行の連続範囲を取り出し、全列とセルごとの型を保って元のファイルをそのまま残す。
使い方
- 1.元のアプリから整合性のある単独の非暗号化 SQLite データベースを書き出します。ファイルを選んで開くか、合成サンプルを使ってください。拡張子は選択時の目安にすぎず、ヘッダー・スキーマ・上限を検査します。WAL モードと付随ファイルは対象外です。スキーマが読めても全体の整合性の認証にはなりません。
- 2.オブジェクトを選び保存された CREATE 定義を確認します。通常のテーブルには列とインデックスの情報を表示します。対応テーブルの行を表示して SELECT を生成し、前後のページやページ移動を使います。ビュー、内部オブジェクト、生成列を持つテーブルはスキーマのみです。仮想テーブルが 1 つでもあるデータベースでは、全テーブルの行アクセスを無効にします。
- 3.1 始まりで両端を含む最大 1,000 行を SQLite の走査順で指定し、CSV か JSON を出力します。空テーブルは 0–0 です。表示ページに関係なく、全列と完全な値を含みます。CSV ヘッダーの保護は有効のままを推奨します。消去・キャンセル・ツールからの移動でメモリ上のセッションを解除しますが、保存した出力は端末に残ります。
合成 SQLite ファイルによる実行可能な例
NULL、空文字列、空バイト列を区別する
{
"file": "example.sqlite",
"table": "records",
"format": "json",
"start": 1,
"end": 2,
"safe": true,
"excerptColumns": [
"id",
"note",
"payload"
]
}{
"columnsExcerpt": [
"id",
"note",
"payload"
],
"rowsExcerpt": [
[
{
"type": "integer",
"value": "1"
},
{
"type": "null",
"value": null
},
{
"type": "blob",
"value": "00FF"
}
],
[
{
"type": "integer",
"value": "2"
},
{
"type": "text",
"value": ""
},
{
"type": "blob",
"value": ""
}
]
]
}同梱サンプルの抜粋列は格納クラスを保ちます。1 行目は NULL と 2 バイトの BLOB、2 行目は空 TEXT と空 BLOB です。1 や 2 も含む全 INTEGER は正確な十進文字列です。実際の出力は全列を含み、excerptColumns は説明を短くするためだけの項目です。
UTF-16 の Unicode と NUL を保持する
{
"file": "utf16le.sqlite",
"table": "words",
"format": "json",
"start": 1,
"end": 3,
"safe": true,
"excerptColumns": [
"value"
]
}{
"columnsExcerpt": [
"value"
],
"rowsExcerpt": [
[
{
"type": "text",
"value": "猫😀"
}
],
[
{
"type": "text",
"value": "é"
}
],
[
{
"type": "text",
"value": "a\u0000b"
}
]
]
}SQLite は UTF-16 LE ファイルを復号します。JSON は漢字、絵文字、アクセント文字、a と b の間の NUL を保持します。エスケープはデータであり文字列の終端ではありません。制御文字はプレビューで見えない場合があります。
数式に見える文字列も型付き CSV にする
{
"file": "example.sqlite",
"table": "records",
"format": "csv",
"start": 3,
"end": 3,
"safe": true,
"excerptColumns": [
"code",
"name",
"note"
]
}{
"csvRecordsExcerpt": [
[
"code",
"name",
"note"
],
[
"T:003",
"T:猫😀",
"T:=SUM(1,2)"
]
]
}出力は引用符付き CSV 自体でなく、CSV 解析後のレコードです。先頭ゼロのコードは T:003、数式風の文字列は T:=SUM(1,2) です。型タグは常に残り、安全設定はヘッダーを保護し本文を変えません。後からタグを除くなら表計算のリスクを再検討してください。
空テーブルでも列情報を出力する
{
"file": "example.sqlite",
"table": "empty_table",
"format": "json",
"start": 0,
"end": 0,
"safe": true,
"excerptColumns": [
"id",
"value"
]
}{
"columnsExcerpt": [
"id",
"value"
],
"rowsExcerpt": []
}0 行テーブルの唯一の有効範囲は開始 0・終了 0 です。JSON は順序付き列名と空の行配列を保持し、CSV はヘッダーのみになります。空テーブルのためにデータ行を作ることはありません。
STRICT テーブルの実際の型を確認する
{
"file": "schema-edge.sqlite",
"table": "strict_values",
"format": "json",
"start": 1,
"end": 3,
"safe": true,
"excerptColumns": [
"value"
]
}{
"columnsExcerpt": [
"value"
],
"rowsExcerpt": [
[
{
"type": "text",
"value": "001"
}
],
[
{
"type": "real",
"value": 1.5
}
],
[
{
"type": "blob",
"value": "00FF"
}
]
]
}strict_values は ANY 列を持つ対応 STRICT テーブルです。値の格納クラスは TEXT、REAL、BLOB です。ビューアーは列宣言から一律に推測せず、セルごとの実際の型を示します。
通常の WITHOUT ROWID テーブルを読む
{
"file": "schema-edge.sqlite",
"table": "without rowid",
"format": "json",
"start": 1,
"end": 2,
"safe": true,
"excerptColumns": [
"a",
"b"
]
}{
"columnsExcerpt": [
"a",
"b"
],
"rowsExcerpt": [
[
{
"type": "text",
"value": "x"
},
{
"type": "integer",
"value": "1"
}
],
[
{
"type": "text",
"value": "x"
},
{
"type": "integer",
"value": "2"
}
]
]
}複合主キーを持つ通常の WITHOUT ROWID テーブルで、名前に空白を含みます。生成 SELECT は 2 行を読み、整数を正確に保ち、rowid 列があると仮定しません。この走査順は不変のサンプルファイルに属します。
生成列を持つテーブルはスキーマのみ
{
"file": "schema-edge.sqlite",
"table": "generated"
}{
"error": "unsupported"
}generated の列と定義は表示しますが、行表示は unsupported になります。プレビューのために生成式を評価しません。対応範囲の制限であり、データ破損の証拠ではありません。
仮想テーブル拡張を初期化しない
{
"file": "virtual-fts5.sqlite",
"table": "docs"
}{
"error": "unsupported"
}FTS5 の仮想テーブルはスキーマで見えますが選択して読めません。仮想テーブルがあるデータベースは、通常に見える拡張のシャドーテーブルも含めて全体をスキーマ専用にします。
コミットを落とす代わりに WAL 入力を拒否する
{
"file": "wal.sqlite"
}{
"error": "wal"
}WAL マーク付きファイルはヘッダー検査で wal を返します。付随ファイルは読み込まず、そこに新しいコミットがあるかも推測しません。元のアプリから整合した単独コピーを書き出してください。
切り詰められたデータベースを拒否する
{
"file": "truncated.sqlite"
}{
"error": "format"
}ヘッダーのページ数と実際の長さが一致しないため format になります。一部だけ有効なデータベースとして返しません。他の破損は対象ページを読む時まで分からない場合があります。
SQLite 閲覧でよくある間違い
- 整合したコピーを作らず、WAL や復旧ジャーナルを無視して使用中アプリの主ファイルを開く。
- スキーマや 1 ページを読めたために、全ページが健全だと思い込む。
- スキーマ専用オブジェクトを空テーブルと解釈したり、仮想テーブル拡張が読み込まれると考えたりする。
- 宣言型や NOT NULL フラグだけで実際の格納型や制約をすべて判断する。
- 100,000+ を正確な件数と読んだり、表示 ID 順に並んでいると考えたりする。
- 出力が表示中の 12 列や現在のページだけを含むと思い込む。
- CSV 型タグを復号せずに外し、null・文字列・バイナリの区別を失ったり、表計算のリスクを再発させたりする。
- ファイル変更、キャンセル、タイムアウト、言語変更後にも古い結果やダウンロードが有効だと考える。
制限と注意事項
- 対象は整合した対応ヘッダーを持つ単独の非暗号化 SQLite 3 ファイルで、最大 16 MiB、ページの予約バイトはゼロ、文字コードは UTF-8 または UTF-16 LE/BE、最大 200 スキーマオブジェクト、通常テーブルごとに 128 列です。名前は UTF-8 で 1,024 バイト、定義 SQL・既定値・型テキストは 1 件 16 KiB、スキーマ要約全体は 512 KiB までです。WAL モードの主ファイル、WAL/SHM、SQL ダンプ、リモート URL、暗号化、拡張固有のファイル形式は扱いません。使用中の主ファイルだけをコピーせず、元のアプリから整合したコピーを書き出してください。
- 行を表示できるのは対応する通常テーブルです。ビュー、トリガー、SQLite 内部オブジェクト、隠し列・生成列を持つテーブルは表示専用で、その式を行表示のために実行しません。仮想テーブルがあるとデータベース全体の行アクセスを無効にし、通常に見える拡張のシャドーテーブルも読みません。メタデータにも対応範囲の制限があります。query_only を有効にしたメモリ上のコピーで、識別子を引用した LIMIT/OFFSET・NOT INDEXED 付き SELECT を生成します。自由入力 SQL、WHERE、結合、ORDER BY、スキーマ変更、拡張読み込み、修復、データベースファイルの出力はありません。
- 件数検査は最大 100,001 行までで、表示・出力対象は先頭 100,000 行です。+ は下限を表し、全体の正確な件数ではありません。1 ページ 25 行・先頭 12 列を表示し、名前は 160 文字、値は 500 文字で短縮します。位置は不変のセッション内の SQLite 走査順で、移植可能なソート順や挿入順ではありません。TEXT/BLOB は 1 セル 256 KiB、内部で実体化する行と各出力は 6 MiB 以内です。成功した出力は最大 1,000 行の指定範囲について全列と完全な値を含み、上限超過で値を黙って短縮しません。開く操作やサンプル表示は完全な整合性検査ではなく、未読ページの破損が残る場合があります。
- 小さい値を含むすべての INTEGER は正確な十進文字列です。REAL は数値ですが +Infinity、-Infinity、-0 は明示的な文字列で、SQLite の演算が正確な十進演算になるわけではありません。TEXT は NUL を含めて保持し、BLOB は大文字 16 進数です。NULL、空 TEXT、空 BLOB、数値に見える TEXT は型ラベルで区別します。JSON は順序付き列名と {type,value} セルの行配列、テーブル・範囲情報を保持する閲覧形式で、DB バックアップではありません。制御文字はプレビューで見えない場合があり、正確な確認には JSON のエスケープを確認してください。
- CSV は UTF-8、カンマ区切り、CRLF レコード区切りです。全データに 2 文字の型タグを付けます。N: は null、I: は整数、R: は実数、T: は文字列、B: は大文字 16 進バイト列です。N:、T:、B: を区別し、null 以外はタグを一度だけ外して値を得ます。タグに見える文字列自体は T: の後ろに保持します。既定の数式保護は危険なヘッダーだけにアポストロフィを付けます。無効にしても型タグは残りますが、列名の数式リスクが生じます。後からタグを除けば数式や型変換のリスクも再発します。要求ごとの 10 秒期限はブラウザーのスケジューリングに依存します。64 MiB は SQLite ヒープの上限で、JavaScript・WASM・ブラウザー全体の上限ではありません。キャンセル、期限超過、障害、ファイル・言語変更、消去、画面終了は処理を無効化してセッションを解除します。内容の送信・保存・第三者 CDN 送信は行いませんが、サイトの資産は取得し、出力には機密情報が含まれ得ます。
よくある質問
ファイルの編集や自由な SQL 入力はできますか?
できません。選択したファイルに書き戻さず、メモリ上のコピーだけを読みます。通常の対応テーブルを選ぶと上限付き SELECT を生成し、保存された定義はテキストとして表示します。自由な SQL、絞り込み、結合、修復は行いません。CSV/JSON には別の SQL ワークベンチ、幅広い SQLite 操作には適切なローカル DB アプリを使ってください。
正しい WAL モードのデータベースも拒否するのはなぜですか?
コミット済みの状態が WAL に依存する場合があり、このツールは単独の 1 ファイルだけを扱うためです。主ファイルが最新だと仮定せず WAL ヘッダーを拒否します。元のアプリで整合した単独のロールバックジャーナル形式のコピーを作ってください。チェック回避のために使用中のアプリのジャーナルを削除しないでください。
スキーマが見えるのに行を表示できないのはなぜですか?
ビュー、仮想テーブル、内部オブジェクト、隠し列・生成列を持つテーブルは安全上の対応範囲としてスキーマのみです。仮想テーブルがあると、シャドーテーブルも含むデータベース全体の行アクセスを無効にします。空や破損を意味しません。理由ラベルを確認し、未対応の値には元のアプリを使ってください。
出力で null、空文字列、バイナリをどう区別しますか?
JSON は各セルの型と値を明示します。CSV は N: が null、T: が空文字列、B: が空バイト列で、他の値は 2 文字のタグの後にあります。整数 1 は I:1、文字列 1 は T:1 です。すべての整数は正確な十進テキストです。この型付き CSV は通常のタグなし表計算データとは異なります。
- SQLite:データベースファイル形式とジャーナル
- SQLite:table_xinfo・index_xinfo メタデータ
- SQLite:格納クラスと型アフィニティ
- sql.js:ブラウザー内 SQLite エンジン