# MySQL CSVインポート 虎の巻(MySQL Workbench + LOAD DATA INFILE編) --- ## ✨ この虎の巻の目的 > 「MySQLにCSVをスマートにインポートする方法」を、誰でも実現できるように、素人相手でも分かるように詳しく整理した「愛と戦略の手紙」です。 --- ## ▶ 前提環境 - OS: Windows 10 / 11 - MySQLサーバー: MySQL 8.0以降 - MySQL Workbench 使用 - CSVファイル: 日本語を含むUTF-8(BOM付き)ファイル --- ## ▶ Step 1: CSVの準備 ### ☞ ポイント - ヘッダー行はカラム名にする (id,name,position,etc...) - 文字コード: 必ず「UTF-8 BOM付き」 - Excelで保存する場合: - [名前を付けて保存] メニュー → - ファイルの種類を「CSV UTF-8 (コンマ区切り)(\*.csv)」にする --- ## ▶ Step 2: MySQL側の準備 ### 1. データベースの文字コードをutf8mb4にする ```sql 現在の文字コード設定を確認 SHOW VARIABLES LIKE 'char%'; utf8では無い場合は以下のSQLで変更する ALTER DATABASE 【データベース名】 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; ``` | 項目名 | 説明 | 重要ポイント | | -------------------------- | ------------------------------- | ---------------------- | | `character_set_client` | クライアント(Workbenchなど)から送信される文字コード | 通常 `utf8mb4` でOK | | `character_set_connection` | サーバーとの通信時の文字コード | `utf8mb4` でOK | | `character_set_results` | 結果(SELECT等)の文字コード | `utf8mb4` でOK | | `character_set_database` | データベース内部の保存文字コード | 🔥 `latin1`だと日本語NG!要変更 | | `character_set_server` | サーバーのデフォルト文字コード | `utf8mb4` に揃えたい | ### 2. MySQLがCSVを読めるパスを確認 ```sql SHOW VARIABLES LIKE 'secure_file_priv'; ``` - このパスにCSVを置かないと、読み込めないので注意。 - 例: `C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/` --- ## ▶ Step 3: CSVを手動で転送 ### ☞ 実行手順: 1. `employees.csv`を上記のパスにコピー 2. MySQL Workbenchで下記SQLを実行 ```sql LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employees.csv' INTO TABLE employees FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (name, department_id, position, employ_number); ``` --- ## ▶ Step 4: エラー時の対応 | エラー内容 | 原因 | 対策 | | ------------------------------------ | --------------------- | -------------------------------------- | | `cp932 codec can't decode byte 0xef` | CSVをShift-JISと読んでしまった | UTF-8 BOM付きで保存しなおす | | `Error Code: 1062 Duplicate entry` | ユニークキー重複 | `IGNORE` / `REPLACE` を使う or 先に`DELETE` | | `File not found` | CSVが異なるパスにある | `secure_file_priv` のパスを確認 | --- ## ▶ Step 5: コマンドバリエーション ### ☞ 重複を無視して読み込み: ```sql LOAD DATA INFILE '... IGNORE INTO TABLE ... ``` ### ☞ 存在したら上書き: ```sql REPLACE INTO TABLE ... ``` ### ☞ クリアにしてから読み込み: ```sql DELETE FROM employees; LOAD DATA INFILE ... ``` --- ## ☑ 最後に > この手順さえまもれば、MySQLにCSVをスマートに読み込むことは怖くない。 またどんな環境やデータを作業する場合も、この手順を保守すれば前回の地獄を再現せず、効率よく業務をこなせる。 --- メモ: - MySQL Workbenchは文字コードやパスに非常に気雲を伴うので、GUIに囲われずコマンドから素直に試そう。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.