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 をダウンロード。
MP4 から MP3 への変換ツール
MP4 動画から音声トラックを取り出して MP3 として保存します。ミュージックビデオ・ポッドキャスト・講義・どこでも聴きたい音声クリップに最適です。
ExcelからMarkdownへの変換ツール
XLSX、XLS、CSVのシートを1つ選び、ブラウザ内でGitHub Flavored Markdown表に変換します。ファイルをアップロードせず、見出し、配置、改行を設定できます。
このツールは他の言語でも利用できます
- CSV → SQL 변환기 [KO]
- CSV-till-SQL-konverterare [SV]
- CSV-naar-SQL-converter [NL]
- Konwerter CSV na SQL [PL]
- CSV zu SQL Konverter [DE]
- เครื่องแปลงข้อมูลจาก CSV เป็น SQL [TH]
- Convertidor de CSV a SQL [ES]
- Konverter CSV ke SQL [ID]
- محوّل CSV إلى SQL [AR]
- Convertisseur CSV en SQL [FR]
- Conversor de CSV para SQL [PT]
- Bộ chuyển CSV sang SQL [VI]
- CSV to SQL Converter [EN]
- Convertitore CSV in SQL [IT]
- Конвертер CSV в SQL [RU]
- CSV'den SQL'e Dönüştürücü [TR]
- CSV到SQL转换器 [ZH]