ロゴ
ToolkitsLabEfficiency Hub
PR広告を含む

CSVスキーマ自動推定ツール各列の型を自動判定し、テーブル定義(DDL)を提案

CSVファイルをアップロードするだけで、各列が整数・小数・日付・真偽値・文字列のどれかを自動判定。 MySQL・PostgreSQL・SQLiteのCREATE TABLE文やTypeScriptの型定義をその場で生成します。

解析はすべてブラウザ内で完結します。CSVの中身が外部サーバーへ送信されることはありません。

CSVファイルをドラッグ&ドロップ

またはボタンから選択してください

CSVの列の型がひと目でわかる、テーブル設計の下準備ツール

「もらったCSVをデータベースに取り込みたいけれど、どの列を何型にすればいいか毎回悩む」——そんな作業を効率化するのが本ツールです。CSVファイルをアップロードするだけで、各列の値を自動で解析し、整数・小数・日付・真偽値・メールアドレス・カテゴリ・文字列のどれに当たるかを判定します。

判定結果は信頼度(一致率)とあわせて表示されるため、データの品質にばらつきがある列も一目で把握できます。判定が意図と異なる場合は、列ごとに手動で型を変更することも可能です。

最終的な結果は、MySQL・PostgreSQL・SQLite向けのCREATE TABLE文に加えて、TypeScriptのinterface定義JSON Schemaとしても出力できるため、バックエンドのテーブル設計からフロントエンドの型定義まで、CSVを受け取った直後の下準備をまとめて済ませることができます。

こんなシーンで便利です

外部から受け取ったCSVをデータベースに取り込む前に

業務委託先やクライアントから届いたCSVファイルを新しいテーブルとして取り込む際、各列の型を手作業で確認する手間を省きたい場合に。

プロトタイプ開発でスキーマ設計を素早く済ませたい時に

サンプルデータからひとまずテーブル定義を作り、開発をすぐに始めたい場面で。生成されたDDLをそのまま叩き台として活用できます。

CSVを基にAPIのレスポンス型を定義したい時に

CSVデータをもとにフロントエンドのTypeScript型定義や、API仕様書用のJSON Schemaを用意したい場合に、型の判定からそのまま出力できます。

既存データの品質(欠損値・型の混在)をざっと確認したい時に

各列のNULL許容や判定の信頼度を見ることで、データクレンジングが必要な列をあらかじめ洗い出しておきたい場合に役立ちます。

使い方は簡単 4ステップ

  1. CSVファイルをドラッグ&ドロップ、またはテキストとして直接貼り付けます。
  2. 区切り文字やヘッダー行の有無を必要に応じて調整します(多くの場合は自動設定のままで問題ありません)。
  3. 列ごとの推定型・信頼度・NULL許容・サンプル値を確認し、必要であれば型を手動で変更します。
  4. MySQL・PostgreSQL・SQLite・TypeScript・JSON Schemaの中から出力形式を選び、コピーまたはダウンロードします。

アップロードしたCSVの中身がサーバーに送信されることはなく、すべての解析はブラウザ内だけで完結します。

ご利用時の注意点

  • 型の判定はデータのパターンに基づく推定であり、100%の精度を保証するものではありません。実際にテーブルを作成する前に、必ず生成結果をご確認ください。
  • 生成されるDECIMALやVARCHARの桁数(例:VARCHAR(255))は一般的な初期値です。実際のデータ量や要件に応じて調整してください。
  • 主キーの候補は自動判定した参考情報です。業務要件に応じて、複合主キーや別の列を主キーとして設定し直してください。
  • 完全無料・安全:入力したCSVデータが外部へ送信されることはない、通信が発生しないブラウザ完結型を採用しています。

自動判定される9種類のデータ型

本ツールが判定するデータ型と、それぞれの判定条件の目安です。

データ型判定の目安SQL出力例(MySQL)
整数全ての値が数字のみで構成されているINT
小数小数点を含む数値が含まれているDECIMAL(10,2)
真偽値true/false、yes/noなど2値のみで構成されているTINYINT(1)
日付YYYY-MM-DDなど日付形式に一致しているDATE
日時日付+時刻の形式に一致しているDATETIME
メールアドレス◯◯@◯◯.◯◯の形式に一致しているVARCHAR(255)
URLhttp://またはhttps://から始まっているVARCHAR(2083)
カテゴリ(列挙型)値の種類が少なく、繰り返し出現しているENUM('a','b',...)
文字列上記のいずれにも一致しないVARCHAR(255)

CSVからのテーブル設計を効率化する考え方

型推定の仕組みと、生成されたテーブル定義を使う際に押さえておきたいポイントを解説します。

型推定はどのように行われているか

本ツールは、各列に含まれるすべての値のパターンを走査し、整数・小数・真偽値・日付・日時・メールアドレス・URL・カテゴリ・文字列という優先順位で、値の9割以上が一致する型を採用しています。
一致率が低い場合はより汎用的な型(最終的には文字列)にフォールバックするため、データが多少乱れていてもエラーにならず、目安となる結果を得られる設計になっています。

信頼度が低い列は、データ品質を疑うサイン

信頼度(一致率)が80%を下回る列は、表記ゆれや異なる形式のデータが混在している可能性があります。例えば日付列に「2024-01-01」と「2024/1/1」が混在している場合、判定は難しくなり信頼度が下がります。
こうした列は、テーブルへの取り込み前にデータクレンジング(表記の統一)を検討するとよいでしょう。

カテゴリ(列挙型)として提案される条件

値の種類が少なく(目安として8種類以下)、かつ全体の行数に対して繰り返し出現している列は、カテゴリ(列挙型)として提案されます。
「ステータス」や「プラン」「都道府県」のような列が該当しやすく、MySQLの出力ではENUM型として、その他のデータベースではCHECK制約を検討すべきVARCHAR型として扱われます。

生成されたDDL・型定義を使う際の注意点

生成されるVARCHARの桁数やDECIMALの精度は、あくまで一般的な初期値です。実際の業務要件やデータの最大長に応じて調整してから使用してください。
また、主キーの提案はあくまで参考情報であり、複合主キーが必要なケースや、外部キー制約の設計は別途検討する必要があります。

よくある失敗と対策

生成されたVARCHAR(255)をそのまま本番テーブルに使ってしまう

自動生成された文字列型の桁数をそのまま採用してしまい、後から想定より長いデータが入らずエラーになったり、逆に無駄に大きな桁数を確保してしまったりする失敗です。

💡 対策・解決策を見る
生成されたDDLはあくまで叩き台として扱い、実際のデータの最大文字数や将来の運用を踏まえて、桁数を必ず見直してから本番環境に適用しましょう。

表記ゆれのある日付列を、そのまま日付型として取り込んでしまう

「2024-01-01」と「2024年1月1日」が混在した列を確認せずに日付型として取り込み、後からデータベース側でエラーや変換ミスが発生する失敗です。

💡 対策・解決策を見る
信頼度が100%未満の列は、サンプル値を確認して表記ゆれがないかチェックし、必要であれば取り込み前にCSV側で日付形式を統一しておきましょう。

自動判定された主キーを確認せずにそのまま採用してしまう

ユニークな値を持つ列というだけで自動的に主キー候補とされた列を、業務的な意味を確認せずにそのまま主キーとして採用してしまう失敗です。

💡 対策・解決策を見る
主キー候補はあくまで機械的な判定です。業務上意味のある識別子かどうかを確認し、必要であれば別途連番のID列を主キーとして追加することを検討しましょう。

カテゴリ(列挙型)に将来追加される値を考慮せず固定してしまう

現在のCSVに含まれる値だけをもとにENUM型を生成し、後から新しいステータスやプランが追加された際にテーブル定義の変更が必要になり手間が増える失敗です。

💡 対策・解決策を見る
将来的に値の種類が増える可能性がある列は、ENUM型ではなく可変長の文字列型(VARCHAR)とアプリケーション側でのバリデーションを組み合わせる方が柔軟に運用できます。

よくある質問(FAQ)

Q.どのようにして列のデータ型を判定していますか

Q.

A. 各列に含まれる値をすべて調べ、整数・小数・真偽値・日付・日時・メールアドレス・URL・カテゴリ(列挙型)・文字列の順に、値が特定のパターンにどれだけ一致するかを判定しています。9割以上の値が同じパターンに一致した場合にその型として推定し、判定の一致率を信頼度として併せて表示します。

Q.推定された型が間違っている場合、修正できますか

Q.

A. はい、可能です。列ごとの一覧表にある「型を変更」の項目から、整数・小数・日付・文字列など9種類の型の中から手動で選び直すことができます。変更内容はすぐに下部のテーブル定義(DDL)やTypeScriptの出力に反映されます。

Q.主キー(プライマリキー)はどのように判定していますか

Q.

A. 全ての行で値が重複しておらず、かつ空欄(NULL)がない列を主キーの候補とみなします。候補が複数ある場合は、列名が「id」「◯◯_id」「番号」などに一致する列を優先的に主キーとして提案します。

Q.生成されたテーブル定義はどのデータベースに対応していますか

Q.

A. MySQL・PostgreSQL・SQLiteの3種類のCREATE TABLE文に対応しています。それぞれのデータベースに適したデータ型(例:真偽値はMySQLではTINYINT(1)、PostgreSQLではBOOLEAN)に自動で変換して出力します。

Q.テーブル定義以外に、どのような形式で出力できますか

Q.

A. SQLのCREATE TABLE文に加えて、TypeScriptのinterface定義と、API開発などで使われるJSON Schema形式でも出力できます。フロントエンドの型定義とバックエンドのテーブル定義を同時に検討したい場合に活用いただけます。

Q.アップロードしたCSVファイルの中身は外部に送信されませんか

Q.

A. 送信されません。CSVの解析・型推定・テーブル定義の生成は、すべてお使いのブラウザ内(JavaScript)で完結する設計になっており、ファイルの内容がサーバーに送信されることはありません。顧客データや個人情報を含むCSVでも安心してお使いいただけます。

Q.列名に日本語やスペースが含まれていても大丈夫ですか

Q.

A. はい、問題ありません。日本語の列名やスペースを含む列名の場合、生成されるSQL文では自動的にバッククォートやダブルクォートで囲み、TypeScriptの型定義では文字列リテラルのキーとして出力するため、そのままの列名で利用できます。

User Feedback & Request

あなたの声で、
このツールをより鋭く。

「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。

フィードバックを送る