バッチファイルでUTF-8のDBデータを取得します。
DBデータ取得部分はDBに併せて変更する。
@echo off REM バッチ実行ファイルと同階層に実行したいSQLファイルを配置する。 REM SQLファイルは1文を1行で記載する。 REM SQLファイルは「PARAM1」と「PARAM2」を置換文字列としておく。 setlocal ENABLEDELAYEDEXPANSION REM SQLファイルの置換内容の入力 set /P START_DAY="開始日(YYYYMMDD)を入力してください。:" set /P END_DAY="終了日(YYYYMMDD)を入力してください。:" REM バッチ実行ディレクトリの設定 set CURRENT_DIR=%~dp0 REM 日付時刻の設定 set CURRENT_DATE_TIME_HOUR=%time:~0,2% set CURRENT_DATE_TIME_MINUTE=%time:~3,2% set CURRENT_DATE_TIME_SECOND=%time:~6,2% set CURRENT_DATE_TIME=%date:~0,4%%date:~5,2%%date:~8,2%%CURRENT_DATE_TIME_HOUR: =0%%CURRENT_DATE_TIME_MINUTE: =0%%CURRENT_DATE_TIME_SECOND: =0% REM DB接続ファイルのディレクトリに移動 REM 今回の例ではMySQLとする set MYSQL_DIR="C:\Program Files\MySQL\MySQL Server 5.7\bin" cd /d %MYSQL_DIR% set SQL_FILE=%CURRENT_DIR%%~n0.sql set SQL_FILE_TMP=%CURRENT_DIR%%~n0_tmp.sql set WORK_DIR="D:\work" set OUT_DIR=%CURRENT_DIR%output\%CURRENT_DATE_TIME% mkdir %OUT_DIR% set ROWNUM=1 REM コンソールの文字コードをUTF-8に変更 chcp 65001 for /f "tokens=*" %%i in (%SQL_FILE%) do ( set SQL_LINE1=%%i set SQL_LINE2=!SQL_LINE1:PARAM1=%START_DAY%! set SQL_LINE3=!SQL_LINE2:PARAM2=%END_DAY%! echo !SQL_LINE3! > %SQL_FILE_TMP% REM DB接続と実行 REM 今回の例ではMySQLとする mysql -h localhost -u ユーザID -pパスワード -P ポート番号 docrdb < "%SQL_FILE_TMP%" >> %WORK_DIR%\!ROWNUM!.txt set /A ROWNUM=!ROWNUM!+1 ) del %SQL_FILE_TMP% REM コンソールの文字コードをShift-JISに変更 chcp 932 REM DBデータ出力結果のファイル名を変更 move %WORK_DIR%\1.txt %OUT_DIR%\01_案件数.txt move %WORK_DIR%\2.txt %OUT_DIR%\02_案件数不備あり.txt move %WORK_DIR%\3.txt %OUT_DIR%\03_案件数不備なし.txt