CSVからSQLへの変換ツール
CSVデータをデータベースに取り込むには、通常ローダーツールを起動するか、ローカルファイルでしか動作しないCOPY/LOAD DATA INFILEコマンドを書く必要があります。数十行、数百行、あるいは数千行程度の小規模なデータセットなら、任意のSQLコンソールに貼り付けられる素のINSERT文の方が手っ取り早いことがよくあります。このツールはCSVとテーブル名を受け取り、バッククォートで囲んだ識別子と、そのまま安全に実行できるシングルクォート付きの値を使って、1行につき1つのINSERT文を生成します。
SQLの構成方法
-
1
CSVを貼り付ける
ヘッダー行の有無を問わない標準的なCSVです。パーサーは引用符で囲まれたセル内の区切り文字も処理します。
-
2
テーブル名を設定する
テーブル名に含まれる英数字以外の文字はアンダースコアに置き換えられ、空欄の場合は`my_table`が使われます。
-
3
列はヘッダーから取得される
ヘッダーモードがオンの場合、1行目が列リストになります。オフの場合、列は`column_1`、`column_2`のように命名されます。
-
4
データ行ごとに1つのINSERT
各行が`INSERT INTO table (cols) VALUES (...)`になります。値はシングルクォートで囲まれ、値の中のシングルクォートは2つに重ねられます。
方言、クォート、そして別の手段を選ぶべきとき
このジェネレータは、識別子をバッククォートで、値をシングルクォートで囲むMySQL風のSQLを対象としています。ほとんどのデータベースでは、わずかな手直しでそのまま受け入れられます。
方言早見表
| データベース | 識別子のクォート | 備考 |
|---|---|---|
| MySQL | バッククォート | そのまま動作します。 |
| MariaDB | バッククォート | そのまま動作します。 |
| PostgreSQL | 二重引用符 | 実行前に ` を " に置き換えてください。 |
| SQLite | 二重引用符 | ` を " に置き換えるか、識別子のクォートを外してください。 |
| SQL Server | 角括弧 | ` を [] に置き換えてください。Unicode には N'...' に注意。 |
値がエスケープされる仕組み
すべての値はシングルクォートで囲まれ、値の中に含まれるシングルクォートは2つに重ねられます(O'Brien は 'O''Brien' になります)。これはSQL-92の標準的な方法で、主要なデータベースすべてで動作します。このコンバーターは型変換を行わず、すべてを文字列リテラルとして出力するため、列が INT の場合はデータベースの暗黙的な変換によって '42' が整数に変わります。
きれいにインポートするためのヒント
- 先にテーブルを作成してください。 コンバーターは
INSERT文だけを出力し、CREATE TABLEは出力しません。手動で定義したスキーマや、ORMから生成したスキーマと組み合わせて使ってください。 - 大きなファイルは分割して。 SQLクライアントに文のサイズ制限がある場合は、一度に500〜1000行ずつ貼り付けてください。
- トランザクションで囲む。 数百行を超える場合は、貼り付けた文の前後を
BEGIN;とCOMMIT;(またはSTART TRANSACTION;/COMMIT;)で囲んでください。1文ごとに自動コミットするよりもはるかに高速です。
SQL生成を使わないほうがよいとき
ファイルが約50,000行を超える場合は、ネイティブのバルクローダー(Postgresの COPY、MySQLの LOAD DATA INFILE、SQL Serverの bcp)のほうが、スクリプトで生成した INSERT より桁違いに高速です。このツールは、手早いインポート、テストデータの投入、一度きりのマイグレーションに向いています。
よくある質問
いいえ。出力するのは INSERT 文だけです。事前に CREATE TABLE でスキーマを自分で定義してください。そうすれば、コンバーターに推測させるのではなく、列の型・長さ・制約を自分でコントロールできます。
1か所だけ変更すれば動作します。テーブル名と列名を囲むバッククォートの識別子クォートを二重引用符に置き換えてください。値はシングルクォートで囲まれているので、SQL-92準拠のどの方言でも変更なしで実行できます。
値の中のシングルクォートは2つに重ねられます(O''Brien)。これは標準的なSQLのエスケープ方法です。バックスラッシュ、パーセント記号、アンダースコアはそのまま通過し、特殊な意味を持つのは LIKE パターンの中だけです。
はい。SQLを生成するためにCSVはサーバーへ送信されます。保存はされず、ページのリンクにも追加されません。
関連ツール
ZIPアーカイブ展開ツール
ZIP、JAR、XPI、DOCX、XLSX、PPTX、ODTの内部をブラウザー内で確認し、アーカイブをサーバーへ送信せずに個別のファイルをダウンロードできます。
CSVからExcelへ変換
CSVをブラウザ内で単一シートのXLSXへ変換します。区切り文字を確認し、IDを保持し、安全な数値だけを数値セルにして内容を送信せず保存できます。
ExcelからCSVへの変換ツール
XLSXまたはXLSのシートをブラウザ内でCSV・TSVに変換。シート、区切り文字、文字コード、非表示データを選べ、ファイルのアップロードは不要です。
字幕ファイル変換
SRTとWebVTTをブラウザ内で相互変換。キューの時刻を検証し、複数行の字幕を保ったままコピーまたはダウンロードできます。
Excel シート分割ツール
XLSX または XLS のブックを、ワークシートのタブ、データ行のまとまり、列の値でブラウザー内で分割します。ファイルをアップロードせずに、1 つの XLSX またはローカル ZIP をダウンロードできます。
WordからMarkdownへの変換ツール
WordのDOCXファイルをブラウザ内で整ったMarkdownに変換します。見出し、リスト、リンク、シンプルな表を保ち、編集可能な.mdファイルをコピーまたはダウンロードできます。