技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した普通の文系SEによる技術ブログ。

Windows環境でツールを入れずにMySQLのUTF-8の日本語項目を操作する

Windows環境でMySQLを使う場合、UTF-8の日本語項目の操作が難しいです。
というのも、コマンドプロンプトMySQLを操作する場合、chcpコマンドでコードをUTF-8(65001)に設定してしまうと日本語が扱えなくなってしまうためです。
コマンドプロンプトUTF-8に設定した場合、レジストリで設定変更しない限り日本語のフォントを使えなくなってしまう。日本語を入力することができず、出力時も文字化けする。)
 
ツールを入れればこの問題は解消するのですが、ツールを入れるのが面倒な場合は、UTF-8で書かれたテキストファイル(.sql)とバッチファイル(.bat)を組み合わせることで日本語項目を操作することができます。
以下、日本語項目をinsert・selectする例です。mysql.exeへのパスは通っているものとします。
 
【前提】
・データベースのユーザとパスワード
root
root
 

・データベース名(スキーマ名)
sample
 
・対象テーブル
create table user
(
user_id CHAR(4) NOT NULL,
user_name VARCHAR(10) NOT NULL,
password VARCHAR(10) NOT NULL,
PRIMARY KEY (user_id)
);
 
【insertする例】
・Insert.sql
use sample;
insert into user values("0001","hoge","hogefuga");
insert into user values("0002","miku","mikunegi");
insert into user values("0003","日本人","nihongo");
 
・Insert.bat
mysql -uroot -proot < Insert.sql
 
・バッチファイルをダブルクリックした結果
userテーブルにデータが挿入される。日本語項目も正しく挿入される。
(後のselect結果で確認する)
 
【selectする例】
・Select.sql
use sample;
select * from user into outfile "C:/tmp/hoge.txt";
 
・Select.bat
mysql -uroot -proot < Select.sql
 
・バッチファイルをダブルクリックした結果
C:\tmp\hoge.txt に下記のように出力される。
(出力ファイルはtab区切り・改行コード\n)
0001 hoge hogefuga
0002 miku mikunegi
0003 日本人 nihongo