このツールについて
このツールはCSVを本物のインメモリSQLiteデータベースに読み込み、それに対して本格的なSQLを実行できます。SELECT、WHERE、ORDER BY、GROUP BY、SUMやCOUNTなどの集計、サブクエリ、自己結合まで、データベースとまったく同じように動作します。WebAssemblyにコンパイルされた公式SQLiteを採用しているため、クエリエンジンは部分的な再実装ではなく本物です。
何もアップロードされません。SQLiteエンジンもCSVもデバイスの外に出ることはなく、データベース全体はブラウザタブのメモリ内に存在し、タブを閉じると消えます。だからこそ、書き出しデータ・売上データ・ログなど、オンラインのデータベースに貼り付けたくないあらゆるスプレッドシートを探索するための安全な作業場になります。eval不要の公式SQLiteビルドを使用しているため、sql.js系のツールがブロックされる厳格なセキュリティポリシー下でも動作します。
列名はヘッダー行から取得され、有効な識別子にサニタイズされます。すべての値はテキストとして保存されるため、算術演算が必要な場合はクエリ内で数値にキャストしてください(例:CAST(price AS REAL))。結果はCSVとしてダウンロードできる表形式で表示されます。
よくある質問
CSVやクエリはどこかにアップロードされますか?
いいえ。SQLiteエンジンはWebAssemblyによって完全にブラウザ内で動作し、データベースはメモリ上にのみ保持されます。CSVもSQLも結果もデバイスの外に出ることはなく、タブを閉じると消えます。
どんなSQLと、どのファイル形式に対応していますか?
入力はCSV(カンマ・セミコロン・タブ・パイプ区切り)です。エンジンは本物のSQLiteなので、標準的なSELECTクエリ(WHERE、ORDER BY、GROUP BY、HAVING、LIMIT、集計、サブクエリ、結合)に対応します。CSVの読み込みは新しいテーブルを作成するだけなので、ロスのある再エンコードではなく、単に値をデータベースに読み込むだけです。
数値の比較がテキストのように動作するのはなぜですか?
何も推測せず失わないよう、すべての列はTEXTとして保存されます。そのためSQLiteは文字列として並べ替え・比較します。本物の数値が必要な場合はクエリ内でキャストしてください。例:ORDER BY CAST(price AS REAL) DESC や WHERE CAST(qty AS INTEGER) > 100。
列名やテーブル名はどのように決まりますか?
列名は(ヘッダーのチェックをオンにすると)ヘッダー行から取得され、有効なSQL識別子にサニタイズされ、重複は解消されます。ヘッダーがない場合はcol1、col2…となります。テーブル名は既定でtですが、CSVを読み込む前に変更できます。