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

・対象テーブル(DDL)

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

いかがでしたでしょうか。

自宅PCで立てた環境での話を記事化したものですが、まさかコマンドプロンプトでUTF-8の日本語のフォントが扱えないとは思いませんでした。
Windows環境なのであれば、初めからShift-JISで実装した方が楽かもしれません。

コメント

タイトルとURLをコピーしました