DOS工具: 每次取出最新的数据,备份后再复制到文件服务器指定目录的工具

    技术2024-07-30  79

    @echo offrem -- =============================================rem -- DESCRIPTION: <自動_導出バッチ>rem -- AUTHOR:  <rem -- CREATE DATE: <2010/12/27>rem -- =============================================

    rem -------------------------------------------------------------rem         ファイルサーバ__usernamerem -------------------------------------------------------------@SET file_server_username=xxx

    rem -------------------------------------------------------------rem         ファイルサーバ__passwordrem -------------------------------------------------------------@SET file_server_password=xxx

    rem --------------------------------------------------------------rem         ファイルサーバ_dir(copy to)rem --------------------------------------------------------------@SET file_server_dir=//192.168.0.218/aaa

    rem --------------------------------------------------------------rem         コピー元タイプ_(default: txt)rem --------------------------------------------------------------@SET file_type1=.txt@SET file_type2=.dat

    rem -------------------------------------------------------------rem         データベース__namerem -------------------------------------------------------------@SET database_name=[project_guest].[dbo]

    rem -------------------------------------------------------------rem         テーブル__namerem -------------------------------------------------------------@SET table_name=.[m_partslist]

    rem -------------------------------------------------------------rem         SQLrem -------------------------------------------------------------@SET select_query_upd="select max(upd_date) from [project_guest].[dbo].[m_partslist]"@SET select_query="select replace(replace(replace(CONVERT(nvarchar,GETDATE(),120),'-',''),':',''),' ','')"rem -------------------------------------------------------------rem         仮ファイルrem -------------------------------------------------------------@SET tmp_file_1=now_time.dat@SET tmp_file_2=old.dat

    rem -------------------------------------------------------------rem         前回更新日付ファイル名rem -------------------------------------------------------------@SET upd_date_file=upd_date.dat

    rem -------------------------------------------------------------rem         CONFIGファイル名rem -------------------------------------------------------------@SET config_file_name=CONFIG.TXT

    IF EXIST %database_name%%table_name%%file_type1% (REN %database_name%%table_name%%file_type1% %tmp_file_2%)

    @IF NOT EXIST %upd_date_file% GOTO now_date

    @FOR /f "delims=," %%x IN (%upd_date_file%) DO (@SET str_upd_date=%%~nx)@SET "select_query_1=select * from [project_guest].[dbo].[m_partslist] where convert(datetime,upd_date,121) > convert(datetime,'%str_upd_date%',121)"

    @FOR /F "eol=# tokens=1,2,3,4* delims=," %%i IN (%config_file_name%) DO ((BCP "%select_query_1%" queryout %database_name%%table_name%%file_type2% -S%%i -U%%j -P%%k -c)IF errorlevel 1 GOTO error)

    @GOTO next_1

    @:now_date

    @SET str_upd_date=%date% %time%@SET "select_query_2=select * from [project_guest].[dbo].[m_partslist] where convert(datetime,upd_date,121) < convert(datetime,'%str_upd_date%',121)"@FOR /F "eol=# tokens=1,2,3,4* delims=," %%i IN (%config_file_name%) DO ((BCP "%select_query_2%" queryout %database_name%%table_name%%file_type2% -S%%i -U%%j -P%%k -c)

    IF errorlevel 1 GOTO error)@GOTO next_1

    @:next_1@FOR /F "eol=# tokens=1,2,3,4* delims=," %%i IN (%config_file_name%) DO ((BCP %select_query_upd% queryout %upd_date_file% -S%%i -U%%j -P%%k -c)

    IF errorlevel 1 GOTO error)@GOTO success

    @:success@IF EXIST %tmp_file_2% (COPY %tmp_file_2% + %database_name%%table_name%%file_type2% %database_name%%table_name%%file_type1% && DEL %tmp_file_2% && DEL %database_name%%table_name%%file_type2%)@REN %database_name%%table_name%%file_type2% %database_name%%table_name%%file_type1%

    rem -------------------------------------------------------------rem         システム日付を取得rem -------------------------------------------------------------@FOR /F "eol=# tokens=1,2,3* delims=, " %%i IN (%config_file_name%) DO (BCP %select_query% queryout %tmp_file_1% -S%%i -U%%j -P%%k -cIF errorlevel 1 GOTO error @FOR /f "delims=," %%x IN (%tmp_file_1%) DO ( @set now_time=%%~nx ))@DEL %tmp_file_1%

    @echo -- =============================================@echo  導出成功しました。@echo -- =============================================

    @COPY %database_name%%table_name%%file_type1% %database_name%%table_name%_%now_time%%file_type1%

    rem -------------------------------------------rem         ファイルサーバを接続rem -------------------------------------------@NET USE %file_server_dir% %file_server_password% /u:%file_server_username%IF errorlevel 1 GOTO error

    rem -------------------------------------------rem         ファイルサーバへコピーrem -------------------------------------------@XCOPY %database_name%%table_name%_%now_time%%file_type1% %file_server_dir% /Y

    IF errorlevel 1 GOTO error@echo -- ===========================================================@echo   %file_server_dir%へコピーしました。@echo   コピー完了しました。@echo -- ===========================================================

    @GOTO end@:error@echo -- =============================================@echo  導出失敗しました。@echo -- =============================================@GOTO end@:endrem -------------------------------------------rem         コピー元を削除rem -------------------------------------------@IF EXIST %database_name%%table_name%_%now_time%%file_type1% (DEL %database_name%%table_name%_%now_time%%file_type1% /Q/F)

     

    ----------------------------------------

    ----------------------------------------

    config.txt

    192.168.0.218,sa,password

    最新回复(0)