actually i did some code to Get files from a directory , compare their name with a substring and then applicate some cmd args on it to push .csv informations into SQL Server Database . It takes too much time and opens a lot of processes because of the number of differents files type , that's why i want to use a .bat file to do the job , but i don't have any idea about how to transform my instructions into batch language and make it run from my application . Here is my code , i hope you understand clearly my question , thanks .
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.IO;
using Microsoft.SqlServer;
using Microsoft.VisualBasic;
using Microsoft.CSharp;
using System.Diagnostics;
using System.Data;
namespace IMR
{
class ProgramCSV // Début Programme
{
// Fonction Main
static void Main(string[] args)
{
// On apelle les deux .exe dans notre main
Integration c = new Integration();
c.UnixToDos();
c.CsvToSql("");
Console.WriteLine(" L'intégration a été effectuée avec succés à la base de données ");
Console.ReadKey();
}
}
public class Integration
{
public void UnixToDos() //la fonction permettant de convertir de Unix à Dos
{
string strCmdText;
DirectoryInfo dir = new DirectoryInfo("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/0101");
Console.WriteLine("Recherche de fichier .csv :"); //Fonction de recherche de tout les fichiers .csv
foreach (var Fi in Directory.GetFiles("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/0101", "*.csv", SearchOption.AllDirectories)) //On précise qu'on veut tout les répértoires
{
Console.WriteLine(Fi);
Console.WriteLine(DateTime.Now);
strCmdText = ("/C Unix2Dos " + Fi ); // On applique la commande pour chaque fichier CSV du repertoire
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
Console.WriteLine("Conversion effectuée !");
}
}
public void CsvToSql(string strCmdText) // la méthode permettant d'entrer les données du CSV à la table SQL
{
DirectoryInfo dir = new DirectoryInfo("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/0101");
Console.WriteLine("Recherche de fichier .csv :"); //Fonction de recherche des csv convertis précédemment
foreach (var Fi in Directory.GetFiles("U:/FichiersINPI/IMR_Donnees_Saisies/tc/flux/2017/06/01/0101", "*.csv", SearchOption.AllDirectories)) //On précise qu'on veut tout les répértoires
{
Console.WriteLine(Fi);
Console.WriteLine(DateTime.Now); // On écrit les fichiers indexés
if (_CompareFileName(Fi, "1_PM.csv")) // Boucle If pour les 13 types de fichiers
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..PM /force"); //Personne Morale
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi, "2_PM_EVT.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..PM_EVT /force"); //Evenement Personne Morale
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "3_PP.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..PP /force"); // Personne Physique
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi, "4_PP_EVT.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..PP_EVT /force"); //Evenement Personne Physique
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi, "5_rep.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Rep /force"); // Représentants
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "6_rep_nouveau_modifie_EVT.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Rep_new /force"); // Modification relative aux représentants
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "7_rep_partant_EVT.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Rep_supression /force"); // Supression d'un représentant
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "8_ets.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Ets /force"); // Etablissements
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "9_ets_nouveau_modifie_EVT.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Ets_modification /force"); // Modification relative aux établissements
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "10_ets_supprime_EVT.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Ets_supression /force"); // Supression d'un établissement
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "11_obs .csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Obs /force"); // Observation
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "12_actes.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Acte /force"); // Actes
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else if (_CompareFileName(Fi , "13_comptes_annuels.csv"))
{
strCmdText = ("/C Csv2Sql_new " + Fi + " IMR_INPI..Compte_annuel /force"); //Comptes annuels
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}
else // On conclue la boucle par un catch qui arrête le traitement automatique en cas d'erreur ( Table pas assez large , fichier corrompu .. )
{
Console.WriteLine("Aucun fichier de ce type est traitable !");
}
Console.WriteLine("Intégration effectuée sur les 13 types de fichiers !"); // Confirmation du traitement des 13 types de fichiers reçus
}
//Se Renseigner sur les tests unitaires */
}
bool _CompareFileName(string fileName, string id) //Fonction de comparaison des chaines de caractéres des .csv SUBSTRING
{
if (fileName.Substring(fileName.Length - id.Length, id.Length) == id)
return true;
else
return false;
}
}
// Fin Programme
}
Aucun commentaire:
Enregistrer un commentaire