戻る

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. 1.元のアプリから整合性のある単独の非暗号化 SQLite データベースを書き出します。ファイルを選んで開くか、合成サンプルを使ってください。拡張子は選択時の目安にすぎず、ヘッダー・スキーマ・上限を検査します。WAL モードと付随ファイルは対象外です。スキーマが読めても全体の整合性の認証にはなりません。
  2. 2.オブジェクトを選び保存された CREATE 定義を確認します。通常のテーブルには列とインデックスの情報を表示します。対応テーブルの行を表示して SELECT を生成し、前後のページやページ移動を使います。ビュー、内部オブジェクト、生成列を持つテーブルはスキーマのみです。仮想テーブルが 1 つでもあるデータベースでは、全テーブルの行アクセスを無効にします。
  3. 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 は通常のタグなし表計算データとは異なります。

関連ツール