Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wykonać pakiet SSIS, gdy plik dotrze do folderu

Sposób, w jaki robiłem to w przeszłości, to pakiet nieskończonej pętli wywoływany na przykład z agenta SQL Server;

To jest mój pakiet nieskończonej pętli:

Ustaw 3 zmienne:

IsFileExists — Boolean — 0

FolderLocation - String - C:\Gdzie plik ma być umieszczony\

IsFileExists Boolean — 0

Dla kontenera For Loop:

Ustaw IsFileExists zmienne jak wyżej.

Skonfiguruj zadanie skryptu C# z ReadOnlyVariable jako User::FolderLocation i mieć następujące:

 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;
    }
}
}

Zasadniczo będzie to mieć oko na lokalizację folderu dla pliku .txt, jeśli pliku nie ma, będzie spał przez 10 sekund (możesz to zwiększyć, jeśli chcesz). Jeśli plik istnieje, zakończy się, a pakiet wykona pakiet ładowania. Jednak będzie nadal działać, więc następnym razem, gdy plik zostanie w nim upuszczony, ponownie uruchomi się pakiet ładujący.

Upewnij się, że uruchamiasz ten pakiet z pętlą wieczną jako zadanie agenta serwera sql, aby działał przez cały czas. Mamy uruchomiony podobny pakiet i nigdy nie spowodował on żadnych problemów.

Upewnij się również, że pakiet wejściowy przenosi/archiwizuje plik z dala od lokalizacji folderu upuszczania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać aktualne rekordy na podstawie ich daty wejścia w życie?

  2. Jak wybrać datę bez czasu w SQL

  3. Przekonwertować na html za pomocą xquery?

  4. Przykład wstawiania SQL Server

  5. Po co używać klauzuli INCLUDE podczas tworzenia indeksu?