IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Process c# + import db2


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut Process c# + import db2
    Bonjour,

    Je dois faire un import d'un fichier txt (séparateur taille fixe) dans une base db2, a partir d'un exe réalisé en c# (.NET 1.0 malheureusement)

    la seule manip qui a l'air de fonctionner (et la plus facile a maintenir en cas de changement dans le fichier), est que mon exe principal lance un .bat via db2cmd.

    mais j'ai quelques soucis :
    bug 1 : la fenetre CLP s'affiche malgré la demande formelle de le cacher
    bug 2 : si je ne mets pas en pause mon programme pendant une minute, il continue dans sa lancée, et le process de traitement de la table commence trop tot si le fichier est lourd (import toujours en cours)
    bug 3 : la fenetre CLP ne se ferme pas.

    Voici donc mon code (version light)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    static int Main(string[] args)
    {
     
    	try
    	{
    		string fichier = "fichier.txt" ;
    		LaunchCommandLineApp(fichier) ;	
    		LogInfo("Fin du load") ;
    	}
    	catch(Exception e) 		{		}
     
    	return v_return;
    }
     
    static void LaunchCommandLineApp(string vFile)
    {
    	Process proc = new Process();		
    	proc.StartInfo.CreateNoWindow = true;
    	proc.StartInfo.UseShellExecute = false;
    	proc.StartInfo.RedirectStandardOutput = true;
    	proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden ;
     
    	proc.StartInfo.FileName = "db2cmd";
    	proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    	proc.StartInfo.Arguments = "c:\loadfile.bat " + vFile    ; 	
     
    	try
    	{
     
    		proc.Start();
    		// verification que l'on ne passe pas a la suite trop vite 
    		System.Threading.Thread.Sleep(60000); // 1 minute 
    		string v_Output = proc.StandardOutput.ReadToEnd().ToString();
    		proc.WaitForExit();
    		if (proc.HasExited)
    			LogInfo("Exited with code " + proc.ExitCode, p_toolBox) ;
    	}
    	catch
    	{
    		// Log error.
    	}
    }

    Si vous avez des conseils, je suis preneuse.

    Merci d'avance.
    K.

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Qu'appelles-tu fenêtre CLP ? Ta fenêtre de ton application console C#, ou celle à l'exécution du .bat ?

    Par ailleurs, attention au caractère d'échappement :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    proc.StartInfo.Arguments = @"c:\loadfile.bat " + vFile    ;

    Ceci dit j'ai un peu de mal à comprendre ton procédé, je ne vois pas trop l'utilité du programme en C#...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut
    En fait, je n'ai mis qu'une partie de mon programme ... normal l'interrogation de l'intérêt. du coup pour le "fichier.txt", il n'est pas vraiment mis comme ca dans mon programme

    Pour plus de détail (je ne pensais pas nécessaire de raconter "ma vie") j'ai plusieurs programmes : le 1er qui parcourt les fichiers d'un répertoire et lance l'exe 2 avec comme paramètre le nom du fichier txt. Ensuite l'exe 2 fait un import du fichier dans une base, puis fait différents traitements. Malheureusement, je n'ai pas choisi la technologyie, je suis juste en train de modifier un programme qui existe depuis plusieurs années (initialement : execute un fichier xls, qui est limité a 65K lignes, et désormais un fichier de 100K, et que j'essaye d'optimiser)

    Quant à la fenetre CLP c'est la fenêtre de commande DB2 (lancée via la commande db2cmd)

Discussions similaires

  1. [DB2] Export/Import sur plateforme différente
    Par marsup54 dans le forum DB2
    Réponses: 2
    Dernier message: 26/08/2009, 11h36
  2. Import sur DB2/400 iserie navigator
    Par suziwan dans le forum DB2
    Réponses: 1
    Dernier message: 16/10/2007, 12h48
  3. [DB2] [Windows vers Iseries] Import/Export ?
    Par fweiner dans le forum DB2
    Réponses: 8
    Dernier message: 28/08/2006, 12h56
  4. PB lecture ou import table DB2 dans ACCESS
    Par Invité dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2006, 14h54
  5. [DB2]Import/Export
    Par Fabien Celaia dans le forum DB2
    Réponses: 1
    Dernier message: 07/01/2005, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo