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

Windows Forms Discussion :

BULK insert pas utilisable


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Par défaut BULK insert pas utilisable
    Bonjour,

    Voila j'ai développé une application en VB ou je dois inserer des données de fichiers dans une table.

    Pour cela je recupere tous mes fichiers (4000 fichiers et 800 lignes par fichiers) et je fais une boucle avec un bulk insert pour inserer tous mes fichiers !

    J'ai fait les test en local et ça marche tres bien ensuite j'ai mis la base sur le serveur de la societe mais le probleme c'est que je n'ai pas les droits (il m'a dit que pour avoir les droits il fallait etre sysadmin).

    Il faut que je trouve une autre solution avez vous une idée ?

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Par défaut
    Regarde ce post : http://www.developpez.net/forums/d82...b-sous-reseau/

    Sa peut t'aider.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Par défaut
    Mon souci c'est qu'il faut que je trouve une autre solution que bulk insert pour inserer mes fichiers

    Est ce que quelqu'un a une idee ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Par défaut utilisation du backgroundworker
    J'ai opté pour une solution avec un BackGroundWorker et avec l'envoi de plusieurs insert en meme temps.

    Mais le temps n'est pas fameux par rapport à un bulk insert !!
    Pour inserer 800 000 tuples je mettais 10 minutes avec le bulk insert et maintenant je mets entre 30 et 40 minutes !!

    Pendant l'execution du programme c'est que quand je fais une requete pour voir combien de données ont été inserees
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select count(*)
    from ligne
    il se passe des secondes sans qu'aucune ne soit inserees !

    Voici un extrait de mon code :

    DoWork qui appelle la fonction files qui elle meme appelle la fonction integrerFichier ou se situent les "insert"

    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
     
     
    Private Sub bgwDonnees_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgwDonnees.DoWork
            Dim repertoire As String
            Dim continu As Boolean = True
            Dim i As Int16 = 0
            nbLigne = 0
     
     
            Try
     
                Dim myDir As String() = Directory.GetDirectories(txtTest.Text)
     
                If (myDir.Length = 0) Then
                    files(txtTest.Text)
     
                Else
     
                    For Each repertoire In myDir
                        files(repertoire)
                    Next
     
                End If
                MsgBox("terminé " & "nbLigne =  " & nbLigne.ToString)
     
            Catch ex As Exception
                MsgBox("bouton" + ex.Message)
            End Try
        End Sub
    IntegrerFichier :

    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
     
    Public Sub integrerFichier(ByVal s As String)
     
            Dim myLines() As String
            Dim continuFichier As Boolean = True
            Dim continuFile As Boolean = True
            Dim codeUNI As String
            Dim i As Int32
     
            Dim sqlSelect As String = Nothing
            Dim ligne As String
            Dim newLigne As String
            Dim l As Int32 = 0
            Dim ElementBis() As String
            Dim IdPV As Int16
     
     
            Try
                Dim fi As FileInfo
                fi = New FileInfo(s)
                Dim Element() As String = fi.Name.Split(".")
                codeUNI = Element(2)
                IdPV = trouverPV(codeUNI)
     
     
                myLines = File.ReadAllLines(s)
     
                If (myLines.Length > 1) Then
                    i = 1
     
                    Do
                        ligne = myLines(i)
                        integrerLigne(ligne, IdPV)
                        myLines(i - 1) = ligne
                        i = i + 1
     
                    Loop While (i < myLines.Length)
     
                    continuFile = tester(myLines(0), IdPV)
     
                    If (Not continuFile) Then
                        Do
                            newLigne = myLines(l)
                            ElementBis = newLigne.Split(";")
                            sqlSelect = sqlSelect & "INSERT INTO ligne  (IdMachine, dateTransaction,decision,codeModePaiement,nbDossiers,sommeTransaction,IdPointVente,trancheHoraire,IdTypeMachine) values  (" & (ElementBis(0)) & ",'" & ElementBis(1) & "','" & ElementBis(2) & "','" & ElementBis(3) & "'," & ElementBis(4) & "," & ElementBis(5) & "," & ElementBis(6) & "," & ElementBis(7) & "," & ElementBis(8) & "); "
                            l = l + 1
                        Loop While (l < myLines.Length - 1)
     
                        Dim CommandSQL As New SqlCommand(sqlSelect, con)
                        CommandSQL.ExecuteNonQuery()
                    Else
     
                    End If
     
                End If
     
            Catch ex As Exception
     
                MsgBox("erreur: " & ex.Message)
     
            End Try
     
     
        End Sub

    Est ce que quelqu'un peut m'aider le temps de traitement je desespere !!

    Merci d'avance !

Discussions similaires

  1. INSERT BULK et pas BULK INSERT
    Par serge0934 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/10/2011, 08h02
  2. Pas d'ajout des lignes avec BULK INSERT
    Par beurknbba dans le forum Développement
    Réponses: 2
    Dernier message: 04/09/2009, 10h28
  3. Bulk Insert qui ne fonctionne pas
    Par genio dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 01/11/2007, 01h13
  4. [SQL SVR 2K]Bulk Insert-Je ne peux pas ouvrir le fichier
    Par Franck2mars dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/07/2006, 14h12
  5. BULK INSERT : Droits nécessaires pour l'utilisation
    Par JYves dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/11/2005, 10h35

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