Eclipseを使っていてSQLデータのCSVインポートについて困ったことを我なりに解決した。


まず、前提として私はゲームプログラマの勉強しているためこちらの知識はあまりありませんのでご理解のほどよろしくお願いいたします

はじめに

EcipseでSQLを使用して会員情報や情報データを保存した。
その情報データをまとめて更新したりをcsvで出来るようにしたい。
色んなサイトやQiitaで紹介してるが所々省かれたりしていて分からない。

そこを普段Eclipse等を使用しない人がやれるとこまで出来た。

接続のための準備

使用DB:MYSQL

ー今回はEclipseとMYSQLの接続については省く

ここでEclipseに「DBViewer」というプラグインを導入してください
   EclipseでDBをいじるのに便利なプラグイン:DBViewer

MySQL起動

コマンドプロンプトにて

mysql -u root -p --local-infile=1

  ーPWを求められている場合はPWを入力して起動する。

use sampleDB //使用するのを指定する
ここまでは基本として考えておいてください

CSVインポートまでの流れ

Eclipseに導入した、「DBViewer」使用して編集したいテーブルをCSV出力する

編集したCSVは保存してからファイルを右クリックで、プログラマから開く→メモから開く
※ 文字コード設定で ANSI から UTF8に変更する ←ここ重要

ここで確認すること

mysql> status

SQLのステータスを確認するコードを入力

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    cp932 //⇒utf8だと失敗
Conn.  characterset:    cp932 //⇒utf8だと失敗

上記の結果にならないといけない! カラムデータの日本語は文字化けする。

文字コードを変更する

C:\ProgramData\MySQL\MySQL Server 8.0
の指定されたファイルにある、my.iniを変更しなければならない。

my.ini
[mysqld]
character-set-server=utf8

[mysql]
default-character-set=cp932

参考:https://teratail.com/questions/26559

他サイトに書いてあった、
 skip-character-set-client-handshake の変更はしてはいけない。←僕も騙されましたw

my.iniを書き直した場合は、MYSQLの再起動が必要になる
コントロールパネル→管理ツール→サービス→MYSQL8.0(verは異なる)→左側にある再起動をクリックすればおk

この設定をした後に、上記にあるステータス確認をして合っているか確認

ついにインポート!

LOAD DATA LOCAL INFILE 'C:/Users/Desktop/test.csv' INTO TABLE testTable FIELDS TERMINATED BY ',';

testTableは指定したテーブルを入力。

そしたらデータが入ってるのではないでしょうか。

少し厄介な文字コード等があり時間かかりましたが誰かの役に立てれば幸いです。

時間あってよければ、僕の作品も見てください→ポートフォリオ