Sql server SSIS存档文件

Sql server SSIS存档文件,sql-server,csv,variables,ssis,etl,Sql Server,Csv,Variables,Ssis,Etl,我有一个输出csv文件的SSIS包,我想做的是在生成csv之前查看目标文件夹,如果已经存在csv(我每天生成),然后将其移动到存档文件夹 我的文件名结构是“name_yymdd_HHMM.csv”。我不确定如何查找文件,因为日期和时间总是不同的。我已经为文件名“NAME.*..csv”创建了一个变量,但不确定id如何将其添加到文件系统任务中?如果文件不存在,id希望它只移动到程序包中的下一步,如果存在,则将文件移动到存档文件夹您应该使用脚本任务来执行此操作: 改为在字符串文件中使用一个变量,该变

我有一个输出csv文件的SSIS包,我想做的是在生成csv之前查看目标文件夹,如果已经存在csv(我每天生成),然后将其移动到存档文件夹


我的文件名结构是“name_yymdd_HHMM.csv”。我不确定如何查找文件,因为日期和时间总是不同的。我已经为文件名“NAME.*..csv”创建了一个变量,但不确定id如何将其添加到文件系统任务中?如果文件不存在,id希望它只移动到程序包中的下一步,如果存在,则将文件移动到存档文件夹

您应该使用脚本任务来执行此操作:

改为在字符串文件中使用一个变量,该变量保存YYMMDD中的值,因为在运行时创建HHMM时无法获取该变量

可以找到日期格式

使用System.IO使用名称空间

更新

如果你想使用一些关于今天日期的东西,你可以像下面这样做,我在这里查找今天的所有文件并移动它们。逻辑应该是什么,这取决于你自己

        string txtFile = null;
        string txtMoveFile = null;

        string date = DateTime.Now.ToString("yyMMdd");
        string filepath = @"D:\new"; 

        /*USE THIS LINE IF YOU WANNA USE VARIABLE FROM FOREACH LOOP CONTAINER*/
        string file = Dts.Variables["User::name"].Value.ToString() +"_*_*.txt";

        //string file = "test_"+date+"_*.txt";

        string[] allfilesfromcurrentdate = Directory.GetFiles(filepath, file);
        string fullpath = filepath + @"\" + file;

        string newpath = @"D:\arch\";
        string newfullpath = newpath + file;

        foreach(string fileName in allfilesfromcurrentdate)
        {
            if(fileName.Contains("test_"+date))
            {
                txtFile = fileName;
                txtMoveFile = txtFile.Replace("new", "arch");
               if(File.Exists(txtFile))
                {
                    File.Move(txtFile, txtMoveFile);
                }

            }
        }

使用脚本任务来实现这一点。除此之外,不要使用HH和MM时间戳保存CSV文件。只需按天保存,这会简单得多,并且当您只每天运行它们时就足够了。我创建了一个变量字符串“name_uuu.CSV,使用源文件夹变量和目标变量创建了foreachloopcontainer,然后将以下内容放入集合文件spec“name”+“+”*“+”*“+”+“+”*”.csv”中,但这不起作用,我这样做是因为创建文件时,如果存在要移动的文件,我不会感到麻烦it@Hadi-我给你写信时,您不能使用HHMM,因为它是运行时。所以你将无法匹配它。因此我只使用日期。否则就不行了。然而,这不是要求,他只需要我在更新中写的文件名。“这对他会有用的。”“好吧,现在我同意了+1@Hadi但除此之外你是对的:)谢谢你的澄清。
        string txtFile = null;
        string txtMoveFile = null;

        string date = DateTime.Now.ToString("yyMMdd");
        string filepath = @"D:\new"; 

        /*USE THIS LINE IF YOU WANNA USE VARIABLE FROM FOREACH LOOP CONTAINER*/
        string file = Dts.Variables["User::name"].Value.ToString() +"_*_*.txt";

        //string file = "test_"+date+"_*.txt";

        string[] allfilesfromcurrentdate = Directory.GetFiles(filepath, file);
        string fullpath = filepath + @"\" + file;

        string newpath = @"D:\arch\";
        string newfullpath = newpath + file;

        foreach(string fileName in allfilesfromcurrentdate)
        {
            if(fileName.Contains("test_"+date))
            {
                txtFile = fileName;
                txtMoveFile = txtFile.Replace("new", "arch");
               if(File.Exists(txtFile))
                {
                    File.Move(txtFile, txtMoveFile);
                }

            }
        }