对文件/目录进行处理并将信息推送到表

时间:2017-07-25 08:42:32

标签: c# sql-server csv

我最近开发了一个C#应用程序,它通过目录和子目录,并在13种类型的.csv文件上应用我的if / else指令,并将信息推送到我的SQL Server数据库。

我创建了一个包含目录和文件计数的表,以及处理的日期时间,我想用这些信息填充它,所以我可以做一些比较,看看是否有任何遗漏/错误,并且有一个关于我每天在数据库中输入了多少数据的日志。有没有办法用GetFiles / GetDirectories属性做到这一点?或者使用SQLBulkCopy?还是其他任何一种C#代码?我搜索了很多,无法找到任何合适的解决方案。

感谢您的聆听。

这是我的代码:

bool _CompareFileName(string fileName, string id)
{
    if (fileName.Substring(fileName.Length - id.Length, id.Length) == id) // On compare les fichiers par rapport à leur " id "
        return true;
    else
        return false;
}

public void LogFile(string sExceptionName, string sEventName, string sControlName, int nErrorLineNo, string sFormName)
{
    StreamWriter log;

    if (!File.Exists("logfile.txt"))
    {
        log = new StreamWriter("logfile.txt");
    }
    else
    {
        log = File.AppendText("logfile.txt");
    }

    // Write to the file:
    log.WriteLine("Data Time:" + DateTime.Now);
    log.WriteLine("Exception Name:" + sExceptionName);
    log.WriteLine("Event Name:" + sEventName);
    log.WriteLine("Control Name:" + sControlName);
    log.WriteLine("Error Line No.:" + nErrorLineNo);
    log.WriteLine("Form Name:" + sFormName);

    // Close the stream:
    log.Close();
}

public void CsvToSql(string strCmdText) // La méthode permettant d'entrer les données du CSV à la table SQL
{
    try
    {
        DirectoryInfo dir = new DirectoryInfo("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/");
        Console.WriteLine("Recherche de fichier .csv convertis :"); //Fonction de recherche des csv convertis précédemment 
        //On utilise un StreamWriter pour écrire les sorties de boucle dans un .bat 
        using (StreamWriter writer = new StreamWriter("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/CsvSql.bat"))
            foreach (var Fi in Directory.GetFiles("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/", "*.csv", SearchOption.AllDirectories)) //On précise qu'on veut tout les répértoires
            {
                if (_CompareFileName(Fi, "1_PM.csv"))   // Boucle If pour les 13 types de fichiers 
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..PM /force");  //Personne Morale
                }
                else if (_CompareFileName(Fi, "2_PM_EVT.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..PM_EVT /force");   //Evenement Personne Morale 
                }
                else if (_CompareFileName(Fi, "3_PP.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..PP /force");    // Personne Physique 
                }
                else if (_CompareFileName(Fi, "4_PP_EVT.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..PP_EVT /force");    //Evenement Personne Physique 
                }
                else if (_CompareFileName(Fi, "5_rep.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Rep /force");    // Représentants
                }
                else if (_CompareFileName(Fi, "6_rep_nouveau_modifie_EVT.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Rep_new /force");   // Modification relative aux représentants
                }
                else if (_CompareFileName(Fi, "7_rep_partant_EVT.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Rep_supression /force");    // Supression d'un représentant 
                }
                else if (_CompareFileName(Fi, "8_ets.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Ets /force");    // Etablissements 
                }
                else if (_CompareFileName(Fi, "9_ets_nouveau_modifie_EVT.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Ets_modification /force");   // Modification relative aux établissements
                }
                else if (_CompareFileName(Fi, "10_ets_supprime_EVT.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Ets_supression /force");  // Supression d'un établissement  
                }
                else if (_CompareFileName(Fi, "11_obs.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Obs /force");    // Observation 
                }
                else if (_CompareFileName(Fi, "12_actes.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Acte /force");    // Actes 
                }
                else if (_CompareFileName(Fi, "13_comptes_annuels.csv"))
                {
                    writer.WriteLine("Csv2Sql_new " + Fi + " IMR_INPI..Compte_annuel /force");   //Comptes annuels 
                }
                else   // On conclue la boucle par un catch qui arrête le traitement automatique en cas d'erreur ( Table pas assez large , fichier corrompu .. )
                {
                }
            }

        //On execute le .bat 
        Process.Start("CMD.exe", "/C start U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/CsvSql.bat");
        Console.WriteLine("Fichier bat executé avec succés , données intégrées");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Il y a un eu une erreur : " + ex.ToString());
    }
}

0 个答案:

没有答案