2017-06-06 3 views
-1

bcpコマンドを実行する単純なバッチファイルを使用します。 テーブル名を含むtxtファイルをループするには、このバッチファイルが必要です。ここでバッチファイルbcpコマンド

は私が

set hour=%time:~0,2% 
if "%hour:~0,1%" == " " set hour=0%hour:~1,1% 
echo hour=%hour% 
set min=%time:~3,2% 
if "%min:~0,1%" == " " set min=0%min:~1,1% 
echo min=%min% 
set secs=%time:~6,2% 
if "%secs:~0,1%" == " " set secs=0%secs:~1,1% 
echo secs=%secs% 

set year=%date:~-4% 
echo year=%year% 

set dt=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hour%%min%%secs% 
set filename=%1 
bcp TABLE.dbo.%1 OUT C:\temp\%filename%_%dt%.dat -n -T 

私は50人のテーブル名を持っているかもしれませんINPUT.TXTファイルから来る%1が好きで、これまで持っているものです。

は、私は、テキストファイルをループforコマンドを使用したいあなたの助け

+0

問題が何ですか? SQLにループがあり、関数を置き換えています... .txtからテーブル名を読み取ることはできますか? –

+0

本当に有益なコメントありがとうございます。もし私がSQLでそれをやり遂げることができたなら、私は今までにやっています。 – Steve

答えて

2

私はロケール/ユーザーの設定に依存する日付/時刻の変数が、日付と時刻の間の唯一のアンダースコアをミス wmic os get LocalDateTimeコマンドを使用することはありません。

@Echo off 
For /f "delims=." %%A in ('wmic os get LocalDateTime^|find "."') do Set DT=%%A 
for /f "delims=" %%F in (%1) do (
    bcp TABLE.dbo.%%F OUT "C:\temp\%%F_%DT:~0,8%_%DT:~8,6%.dat" -n -T 
) 
1

いただきありがとうございます。ヘルプについては、for /?を参照してください。

ファイル名がinput.txtで、各行に1つのテーブル名があるとします。あなたはmyscript.cmd input.txtでそれを呼び出す:

set hour=%time:~0,2% 
if "%hour:~0,1%" == " " set hour=0%hour:~1,1% 
echo hour=%hour% 
set min=%time:~3,2% 
if "%min:~0,1%" == " " set min=0%min:~1,1% 
echo min=%min% 
set secs=%time:~6,2% 
if "%secs:~0,1%" == " " set secs=0%secs:~1,1% 
echo secs=%secs% 

set year=%date:~-4% 
echo year=%year% 

set dt=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hour%%min%%secs% 

for /f %%i in (%1) do (
    bcp TABLE.dbo.%%i OUT C:\temp\%%i_%dt%.dat -n -T 
) 
関連する問題