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 :

remplir une base sql chaque 1 s avec un fichier .dat [Débutant]


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Points : 26
    Points
    26
    Par défaut remplir une base sql chaque 1 s avec un fichier .dat
    Bonjour tout le monde :

    Je suis toujours a la recherche pour mon probléme et je ne trouve pas la solution jusqu'a présent,j'ai poster mon probléme sur notre forum et j'ai parcourus le net mais en faite je m'explique j'ai un fichier .dat que je dois le lire chaque seconde et je dois alimenter ma base avec le contenu de ce fichier en tps réél ! bon jusqu'a présent j'ai eu la chance de resoudre ce probléme grace a ce code :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Data.SqlClient;
    using System.IO;
     
     
    namespace PFE_2013_V1
    {
        public partial class parser : Form
        {
            public parser()
            {
                InitializeComponent();
            }
     
            private void StartImport()
                    {
                       Stopwatch sw = new Stopwatch();
                       sw.Start();
                       SqlBulkCopy bulkCopy = new SqlBulkCopy("Data Source=SEDKI-FAMILY\\SEDKIPC;Initial Catalog=BASE_BT;Integrated Security=True;", 
                       SqlBulkCopyOptions.TableLock);
                       bulkCopy.DestinationTableName = "dbo.testtable";
                       bulkCopy.WriteToServer(CreateDataTableFromFile());
                       sw.Stop();
                       textBox1.Text = (sw.ElapsedMilliseconds/1000.00).ToString();
                    }
            private DataTable CreateDataTableFromFile()
            {
                  DataTable dt = new DataTable();
                  DataColumn dc;
                  DataRow dr;
     
                 dc = new DataColumn();
                 dc.DataType = System.Type.GetType("System.String");
                 dc.ColumnName = "c1";
                 dc.Unique = false;
                 dt.Columns.Add(dc);
                 dc = new DataColumn();
                 dc.DataType = System.Type.GetType("System.String");
                 dc.ColumnName = "c2";
                 dc.Unique = false;
                 dt.Columns.Add(dc);
                 dc = new DataColumn();
                 dc.DataType = System.Type.GetType("System.String");
                 dc.ColumnName = "c3";
                 dc.Unique = false;
                 dt.Columns.Add(dc);
                 dc = new DataColumn();
                 dc.DataType = System.Type.GetType("System.String");
                 dc.ColumnName = "c4";
                 dc.Unique = false;
                 dt.Columns.Add(dc);
                 dc = new DataColumn();
                 dc.DataType = System.Type.GetType("System.String");
                 dc.ColumnName = "c5";
                 dc.Unique = false;
                 dt.Columns.Add(dc);
     
                 StreamReader sr = new StreamReader(@"E:\EVENT.DAT");
                 string input;
                 while ((input = sr.ReadLine()) != null)
                  {
                    string[] s = input.Split(new char[] { ' ' });
                    dr = dt.NewRow();
                    dr["c2"] = s[0];
                    dr["c3"] = s[1];
                    dr["c4"] = s[2];
                    dr["c5"] = s[3];
                    dt.Rows.Add(dr);
                  }
                     sr.Close();
                     return dt;
    }
     
    private void button1_Click(object sender, EventArgs e)
    {
        StartImport();
    }
     
    private void button2_Click(object sender, EventArgs e)
    {
        Acceuil retourstart = new Acceuil();
        retourstart.Show();
        this.Close();
    }
     
            }
        }

    mais mon point bloquant et que je veux en premier lieu faire le compteur ou le timer qui lit mon fichier EVENT.DAT chaque 1 seconde et en 2éme lieu je veux aprés cette seconde uniquement ajouter la ligne qui vient d'etre ecrite dans le fichier EVENT.DAT et non pas recopié toute l'intégralité du fichier et ainsi allourdir la base et augmenter sa taille avec les anciennes lignes !

    j'espére que j'ai pu bien m'expliquer et faire comprendre mon probléme
    svp je suis bloqué a ce niveau depuis + qu'un mois et tout mon projet de fin d'étude se base sur cette astuce

  2. #2
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Petite remarque, utilise les balises de code plutôt que de mettre ton code en rouge c'est illisible.

    Pour ton soucis éventuellement :

    - Crée un timer qui ira rechercher le nombre de ligne dans ton fichier toute les un ou deux secondes à ta convenance.
    - Si une (ou des) ligne(s) supplémentaire(s) par rapport à la lecture précédente (voir si le nombre de lignes du fichier supérieur au nombre de lignes dans la table destination de la BD), tu lis les x dernières lignes du fichier et tu les insères dans la DB
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Désolé je ne réponds pas en message privé pour les demandes d'aide. Mais voici la manière de créer un timer

    Donc pour créer un timer,

    1. tu vas sur ta boite de composant en mode design, tu recherches le composant timer et tu le fais glisser sur ta form (comme si tu plaçais un bouton).

    2. au niveau des propriétés le cas échant tu changes le nom du composant (ca fais toujours plus propre que timer1 ;-) ) et tu définis la propriété intervalle (en milliseconde).

    3. En suite du défini l'événement Tick du timer et tu y ajoutes le code à exécuter. En gros tu vas obtenir ceci dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void timer1_Tick(object sender, EventArgs e)
    {
    	timer1.Enabled = false; 
    	MessageBox.Show("tick");
    	timer1.Enabled = true;
    }
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 27
    Dernier message: 27/10/2013, 10h25
  2. Exportation d'une base sql server 2005 complète ds un fichier txt
    Par papillange dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/08/2007, 15h39
  3. [SQL] Remplir une base SQL à partir d'un tableau à plusieurs lignes et colonnes
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/08/2007, 08h56
  4. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  5. probleme de connexion à une base sql avec mot de passe
    Par cari dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/12/2005, 10h16

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