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はサーバーへ送信されます。保存はされず、ページのリンクにも追加されません。
関連ツール
ファイル拡張子識別ツール
ファイル名や拡張子から、対応するファイルタイプとMIMEタイプを調べられます。一般的なフォーマットの早見表と、二重拡張子を見抜くヒント付きです。
Excel シート分割ツール
XLSX または XLS のブックを、ワークシートのタブ、データ行のまとまり、列の値でブラウザー内で分割します。ファイルをアップロードせずに、1 つの XLSX またはローカル ZIP をダウンロードできます。
SQLテストデータジェネレーター
任意のテーブル名に対し、連番のサンプル行(id, name, email, active)で実行可能なSQL INSERT文を生成します。最大200行、MySQL構文、ワンクリック。
MOBI から EPUB への変換ツール
MOBI の電子書籍を、Apple Books・Kobo・Google Play ブックス・最新のほとんどのアプリが読めるオープン標準の EPUB に変換します。.mobi ファイルをアップロードして、きれいな .epub をダウンロード。
ExcelからMarkdownへの変換ツール
XLSX、XLS、CSVのシートを1つ選び、ブラウザ内でGitHub Flavored Markdown表に変換します。ファイルをアップロードせず、見出し、配置、改行を設定できます。
CSVからExcelへ変換
CSVをブラウザ内で単一シートのXLSXへ変換します。区切り文字を確認し、IDを保持し、安全な数値だけを数値セルにして内容を送信せず保存できます。
このツールは他の言語でも利用できます
- CSV zu SQL Konverter [DE]
- Conversor de CSV para SQL [PT]
- Convertidor de CSV a SQL [ES]
- CSV-naar-SQL-converter [NL]
- Bộ chuyển CSV sang SQL [VI]
- เครื่องแปลงข้อมูลจาก CSV เป็น SQL [TH]
- Konverter CSV ke SQL [ID]
- CSV → SQL 변환기 [KO]
- CSV-till-SQL-konverterare [SV]
- محوّل CSV إلى SQL [AR]
- Convertisseur CSV en SQL [FR]
- Konwerter CSV na SQL [PL]
- Convertitore CSV in SQL [IT]
- Конвертер CSV в SQL [RU]
- CSV'den SQL'e Dönüştürücü [TR]
- CSV到SQL转换器 [ZH]
- CSV to SQL Converter [EN]