sql >> データベース >  >> RDS >> Sqlserver

ファイルがフォルダに到着したときにSSISパッケージを実行する方法

    私が過去にこれを行った方法は、たとえばSQLServerAgentから呼び出された無限ループパッケージを使用することです。

    これは私の無限ループパッケージです:

    3つの変数を設定する:

    IsFileExists-ブール値-0

    FolderLocation-文字列-C:\ファイルを配置する場所\

    IsFileExistsブール値-0

    Forループコンテナの場合:

    IsFileExistsを設定します 上記の変数。

    ReadOnlyVariableをUser::FolderLocationとしてC#スクリプトタスクを設定します そして、次のものがあります:

     public void Main()
        {
            int fileCount = 0;
            string[] FilesToProcess;
            while (fileCount == 0)
            {
                try
                {
    
                    System.Threading.Thread.Sleep(10000);
                    FilesToProcess = System.IO.Directory.GetFiles(Dts.Variables["FolderLocation"].Value.ToString(), "*.txt");
                    fileCount = FilesToProcess.Length;
    
                    if (fileCount != 0)
                    {
                        for (int i = 0; i < fileCount; i++)
                        {
                            try
                            {
    
                                System.IO.FileStream fs = new System.IO.FileStream(FilesToProcess[i], System.IO.FileMode.Open);
                                fs.Close();
    
                            }
                            catch (System.IO.IOException ex)
                            {
                                fileCount = 0;
                                continue;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
            // TODO: Add your code here
            Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
    }
    

    これにより、基本的に.txtファイルのフォルダーの場所を監視します。ファイルがない場合は、10秒間スリープします(必要に応じてこれを増やすことができます)。ファイルが存在する場合、ファイルは完了し、パッケージはロードパッケージを実行します。ただし、引き続き実行されるため、次にファイルをドロップすると、ロードパッケージが再度実行されます。

    この永久ループパッケージをSQLサーバーエージェントジョブとして実行して、常に実行されるようにしてください。同様のパッケージが実行されており、問題が発生することはありません。

    また、入力パッケージがファイルをドロップフォルダの場所から移動/アーカイブすることを確認してください。



    1. Java-Eclipse:パッケージoracle.jdbc.driverが存在しません

    2. 左結合、合計、およびカウントグループ

    3. Oracle分散データベースでLOBを処理するための最良の方法

    4. 別のテーブル値に基づくMySQL更新テーブル