[MySQL] 日付の形式を変えながらmysqlimportするとき

MySQL
CSVを読み込んでmysqlimportでデータを入れようとしたらエラーが出てきた時の話。

データ取得先が変わったからURIとか取得ファイル名だけ変更してロジックを書いていたら上手くいかない・・・・
なんだと思っていたらCSVの日付の形式がMM/DD/YYYYになっていました。
日本でのMySQLの日付の形式はYYYY-MM-DD(-か/かはうろ覚え)なのでエラーになってしまいました。 ほんならデータを変換しながら入れていけばいいのかなって時の対処です。
MySQL5.6

もともとCSVを読み込んでDBに入れようとしていたコマンドは
mysqlimport -v -d -L -u $ユーザー --password=$パスワード -h$ホスト名 --lines-terminated-by="¥n
" --field-terminated-by=$CSVならカンマ $DB名 $読み込みファイル 2>>$エラーログ 1>>$ログ
これでは入らん・・・ぐぬぬ・・・となっていたら日付の形式が違うことに気づき、変換しながら入れてみようってなり作ったクエリがこちら
mysql -vvv -u $ユーザー名 --password=$パスワード -h$ホスト名 -e "LOCAL DATA LOCAL INFILE '$読み込みファイル' INTO TABLE $DB名 FIELDS TERMINATED BY ',(CSVだから)' LINES TERMINATED '¥n' IGNORE 1 LINES (@v1 (カラムの順番), @v2, @v3・・・) SET カラム名1 = DATE_FORMAT(STR_TO_DATE(@v1, '%m/%d/%Y), '%Y/%d/%d'), カラム名2 = @2v, カラム名3 = @v3・・・・・・;" 2>>$エラーログ 1>>$ログ
※-vvvは実行時間を出力 この様に変換しながらデータを入れていく感じで

コメント

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