1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLでcsvからデータを取り込む方法

Last updated at Posted at 2025-07-03

1. サーバーでファイル読み込みを許可する

SQLにログインして、以下を実行。

SHOW GLOBAL VARIABLES LIKE 'local_infile';

ValueがOFFになっていたら、以下でONに変更する。

SET GLOBAL local_infile = 1;

この設定はMySQLサーバーを再起動すると元に戻ってしまうため、永続的に設定を変更したい場合は、MySQLの設定ファイル(my.cnfまたはmy.ini)の[mysqld]セクションにlocal_infile=1と追記する。

2. MySQL8.0以降で認証プラグインにフラグをたてる&ファイル読み込み使用状態でログイン

mysql --local-infile=1 --enable-cleartext-plugin -u [ユーザー名] -p [データベース名]

e.g.,

mysql --local-infile=1 --enable-cleartext-plugin -u root -p dwh12

3. ログイン後にインポートする

LOAD DATA LOCAL INFILE '/path/to/your/csv.csv'
INTO TABLE [テーブル]
FIELDS TERMINATED BY ','
ENCLOSED BY ""
LINES TERMINATED BY '\n'
(カラム1, カラム2, カラム3);

e.g.,

LOAD DATA LOCAL INFILE '/path/to/your/students.csv'
INTO TABLE 学生情報
FIELDS TERMINATED BY ','
ENCLOSED BY ""
LINES TERMINATED BY '\n'
(学籍番号, 氏名, 氏名カタカナ, 性別, 生年月日);

※テーブルのカラムを記入しなくてもいけるが、書いた方が安全(CSVとテーブルのカラムの対応付を明確に示すことで、正しい場所にデータを対応付けられる・誰がクエリを読んでも内容が分かりやすい・将来テーブルの列が変更されても、このクエリは正しく動作する)(CSVとテーブルのカラムの順番が異なる場合、ここに書いて指定する必要がある)

※csvのパスは~表記などで省略しない方が安全(チルダは普段はシェルが処理するが、mysqlクライアントが解釈できるとは限らないため)

4. (テーブルのカラムを省略)

LOAD DATA LOCAL INFILE '/users/user/Desktop/csv_files_mac/得点.csv' 
INTO TABLE 得点 
FIELDS TERMINATED BY ',' 
ENCLOSED BY ""
LINES TERMINATED BY '\n';
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?