MySQLからの出力が文字化けする(シェルスクリプト利用時)
MySQLからの出力が、
- 直接sqlを実行すると化けない
- シェルスクリプトから実行すると、文字化けする
という現象に困っています。
シェルのロケールの問題かと思うのですが、
今のところ解決しておりません。
もしお知恵をお貸しいただけるなら助かります。
以下、サンプルコードと環境を記しておきます。
次のようなテーブルを作成し、データをINSERTしたとします。
CREATE TABLE sori (
ID int NOT NULL UNIQUE,
name varchar(50)
);
INSERT INTO sori (ID, name) VALUES (0, '安部晋三');
出力用のファイルを用意します。
$ cat backup.sql
use test;
SELECT * FROM sori ORDER BY ID;
上記のsqlを実行するシェルスクリプトです。(ユーザ名を隠してあります)
$ cat backup.sh
#!/bin/sh
output_file_name=/home/***/test.data
mysql -u root -p < /home/***/backup.sql > $output_file_name
直接、sqlを実行すると、文字化けしません。
$ mysql -u root -p < backup.sql > test2.data
Enter password:
$ cat test2.data
ID name
0 安部晋三
次に、シェルスクリプトを介して、出力します。
olive:~$ ./backup.sh
Enter password:
$ cat test.data
ID name
0 安部晋三
こんな感じです。
ロケールですが、
$ echo $LANG
ja_JP.utf8
となっております。
最後に環境です。
$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
$ rpm -qa | grep mysql
mysql-community-libs-5.6.37-2.el7.x86_64
mysql-community-devel-5.6.37-2.el7.x86_64
mysql-community-release-el7-5.noarch
php-mysql-5.4.45-13.el7.remi.x86_64
mysql-community-client-5.6.37-2.el7.x86_64
mysql-connector-odbc-5.3.9-1.el7.x86_64
mysql-community-common-5.6.37-2.el7.x86_64
mysql-community-server-5.6.37-2.el7.x86_64
よろしくお願いします。