dateコマンドで曜日を取得する
MySQLでCSVファイルにエクスポートした場合、「Null」が「¥N」になる
下記のように「SELECT * FROM 〜〜 INTO OUTFILE 〜〜」でMySQLのデータをCSVファイルにエクスポートした場合、「Null」を含むとその値が「¥N」となって出力されます
mysqL> SELECT * FROM table_name INTO OUTFILE '/var/tmp/test_table.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
「¥N」を「””」などの空白に置換すれば空白扱いになりますが、その都度行うのは面倒ですしデータが大きいと置換に時間がかかります。
IFNULL関数で、NULLの場合は、空文字に設定して出力する
MySQLでは、「Null」が「¥N」になってしまうのは、MySQLではNullと空文字の扱いが違うためです。
そのため、Nullを含む場合は出力時に「空文字」になるように、IFNULL()関数してNullの場合は、どのように置換するか指定します
mysqL> SELECT name, price, IFNULL(code, '') FROM table_name INTO OUTFILE '/var/tmp/test_table.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
「date」コマンドで指定された日付の曜日を取得したい場合は、「date -d YYYYMMDD '+%w’」で曜日が取得できます
$ date -d 20181003 '+%w' 3
「date -d 20181003」で日時を指定して、「%w」で曜日を取得しています。
曜日の数字は、「0 〜 6」で表示され、「0」が日曜日、「6」が土曜日となります
シェルスクリプトで曜日判定で処理を分けたい場合は以下のようにすれば、指定された曜日によって処理を分けることができます
$ vim test.sh #!/bin/bash DATE1=20180930 DATE2=20181003 SUN=`date -d $DATE1 '+%w'` THU=`date -d $DATE2 '+%w'` if [ $SUN -eq 0 ] ; then echo "日曜日です" fi if [ $THU -eq 3 ] ; then echo "水曜日です" fi $ sh test.sh 日曜日です 水曜日です
ディスカッション
コメント一覧
3だと水曜日ですね…?
指摘ありがとうございます。
間違ってますね、直しておきます