Voglio verificare se esiste un file in una particolare cartella da SSIS. Come posso realizzare questo?Attività Script SSIS per verificare se il file esiste nella cartella oppure no
risposta
Non ci sono task nativi all'interno di SSIS che possono eseguire questo controllo ma è possibile farlo utilizzando un'attività Script ma suggerisco di controllare i seguenti collegamenti per i semplici passaggi richiesti per raggiungere tale obiettivo.
http://www.bidn.com/blogs/DevinKnight/ssis/76/does-file-exist-check-in-ssis
Variabili:
cartella - stringa - C :: \ Temp \
di file - stringa - 1.txt
FileExists - booleana - False
public void Main()
{
string folder = Dts.Variables["User::folder"].Value.ToString(); //@"C:\temp\";
string file = Dts.Variables["User::file"].Value.ToString(); //"a.txt";
string fullPath = string.Format(@"{0}\{1}", folder, file);
Dts.Variables["User::fileExists"].Value = File.Exists(fullPath);
Dts.TaskResult = (int)ScriptResults.Success;
}
Ho provato la risposta sopra, ma ho riscontrato un errore durante l'esecuzione di ssis nel nostro ambiente. L'eccezione è stata lanciata dall'invocazione del target. – user2756589
Assicurati che quelle variabili siano passate allo script; cartella e file come ReadOnly, fileExiste come ReadWrite –
In alternativa all'utilizzo di una variabile "out", è anche possibile modificare Dts.TaskResult
in base alla presenza o meno del file. Lo snippet seguente non riesce l'attività di script se il file non esiste. (Inoltre, crea una voce di registro se la registrazione è abilitata.)
public void Main()
{
string fileName = Dts.Variables["User::sourcePath"].Value.ToString() + Dts.Variables["User::fileName"].Value.ToString();
if (File.Exists(fileName))
{
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
Dts.Log(string.Format("File {0} was not found.",fileName),0,null);
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
È possibile utilizzare Foreach Loop Container
e semplicemente mettere tutti i tuoi oggetti in esso. Verrà eseguito se il file esiste e non lo sarà se non lo è. Molto semplice :)
Molto bello! Stavo cercando qualcosa di semplice e facile da implementare e che funzioni bene. – Vladimir
È possibile utilizzare questo come punto di partenza. http://stackoverflow.com/questions/7385251/how-to-check-if-a-file-exists-in-a-folder –
Sto usando il codice sottostante Dts.Variables ("FileExists"). Value = File.Exists (Dts.Variables ("FileLocation"). Value) dove FileExists è una variabile booleana e "FileLocation" è una variabile stringa con percorso file Anche se il file è presente nella cartella, continua a fornire un valore False . – user1429135
Solo curioso di sapere se la soluzione indicata di seguito ti è stata utile e se sei riuscito a risolvere il problema. Il tuo feedback sarà utile per me e anche per i futuri visitatori che hanno problemi simili. Grazie. –