bugfix> mysql > 投稿

私はバッチスクリプトの初心者であり、できることを書くのに苦労しています。

1)csvの最初の列を読み取り、それらの値を変数として設定します。

2)これらすべての変数をWHEREに追加する短いsql文スクリプトを作成します  句。

それで全部です...

私がすでにやったこと:

CSVファイル(追加する変数) CSVファイル

バッチコード バッチコード

結果スクリプト: 脚本

必要なもの: バッチからのMySQLスクリプトの結果

共有するアイデアはありますか?

回答 1 件
  • @echo off
    setlocal
    set "_InputFile=%userprofile%\Desktop\FC3.txt"
    set "seq="
    for /f "tokens=1 delims=," %%A in (%_InputFile%) do (
        call set "seq=%%seq%%%%~A,"
    )
    set "seq=(%seq:~,-1%)"
    > FinalStage.sql echo SELECT * FROM Totalfm3 WHERE Totalfm3.BRN IN %seq%
    exit /b
    
    

    %userprofile%   C:Users\Martin になることが期待されています  あなたのアカウントで。

    %seq%  コンマで区切られた数値を格納します。

    ザ・ call set  追加の解析を行うため、 %%seq%%  を評価する seq の変数名の値  遅延拡張を必要とせずに。

    set "seq=(%seq:~,-1%)"  最後のコンマをトリミングし、括弧を追加します コンマ区切り値。

    最後に、SQLステートメントがファイルに書き込まれます。

    for に設定されたトークン  ループはcsvファイルのサンプルと一致しません。 トークンを 1 に設定します  csvファイルのサンプルと一致します。あなたがする必要があるかもしれません ニーズに合わせてトークンを調整します。


    複数行のステートメントを作成します。

    変化する:

    > FinalStage.sql echo SELECT * FROM Totalfm3 WHERE Totalfm3.BRN IN %seq%
    
    

    (
        echo SELECT * FROM Totalfm3
        echo WHERE Totalfm3.BRN IN %seq%;
    ) > FinalStage.sql
    
    

    ; を追加  ステートメントの最後で、それがMySQLがステートメントを終了する方法です。

あなたの答え