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 :

Insertion en bloc via BULK INSERT avec c# (2.0)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Par défaut Insertion en bloc via BULK INSERT avec c# (2.0)
    Bonjour,

    Je travaille le framework 2.0, pour une application ASP.net avec le langage c#. J'ai une base de données SQL Server 2005.

    L'application doit permettre de charger de centaine de milliers de données tous les jours sur demande.

    Actuellement pour charger ces données, l'insertion se faisait 1 à une dans la base des procedure stockées. Pour des dizaine de millier de données le chargement ne posé pas de problème. Or pour inserer environ 300 000 ligne d'enregistrement en base j'ai l'erreur suivante
    “Sys.WebForm.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was 12002”
    Je suis donc passé par l'enregistrement en bloc via BULK INSERT. Mais l'insertion ne fonctionne pas non plusn j'e dirais même plus que le traitement prend encore plus de temp.

    Mais peut être que je m'y prend mal. J'insere chaque ligne d'enregistrment dans un fichier via la fonction :
    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
    public static bool CreateBulkInsertFile(string p_sNameTable,string p_sLigne)
            {
                try
                {
                   StreamWriter v_fileBulkInsert = new StreamWriter(CHEMIN+ "//" + p_sNameTable+".txt", true);
     
                    //Ajout de la trace dans le fichier Bulk Insert
                    v_fileBulkInsert.WriteLine(p_sLigne);
     
                    //Fermeture du fichier Bulk Insert
                    v_fileBulkInsert.Close();
     
                    return true;
                }
                catch(Exception)
                {
                    return false;
                }
            }
    Il y peut être d'autre solution, ou amelioration de ma façon de faire.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Par défaut
    Je devrai peut être, proceder avec de la memoire cache, via des fichiers ou bien des datable... au lie d'ecrire a chaque fois dans des fichiers...

    Merci d'avance pour vos réponses. Car la je galère vraiment...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Par défaut
    Est-ce que SqlBulkCopy vous dis quelque chose. Et pourrait t-il faire l'affaire.

    Merci d'avance.

    PS l'insertion n'est plus de l'orde de centaine de millier d'enregistrement mais de dizaine de million d'enregistrement.

  4. #4
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    Tu ferais mieux de regarder du coté de SSIS avec la fonction BulkInsert. c'est plus simple à gérer je pense. Ensuite tu intègres ton package sur SSRS de SQL Server et tu créés un job SQL Server Agent qui l'exécute. En terme d'efficacité et de temps de développement tu y gagnes
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Par défaut
    Oui effectivement, j'ai déjà entendu parler de SSIS.

    Mais pour cela il me semble qu'il faille que j'ai déja des fichier type XML. or la création des fichiers déjà prend un temp monstrueux. 100 000 lignes en 12heures dans un fichier or je dois pouvoir insérer un diziane de millions de lignes. Je me demandé donc si l'insertion dans datatables n'est pas plus rapide ue dans un fichier .txt...

    qest- que vous avez des connaisse sur la performace entre ecriture fichier ou ecrite database???

  6. #6
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    tes fichiers sont sous quel format? pour SSIS tu n'es pas obligé d'être sous xml les csv sont très bien interprétés par SSIS
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

Discussions similaires

  1. Import csv via bulk insert
    Par DanaX dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 15/11/2008, 19h03
  2. Réponses: 2
    Dernier message: 09/10/2008, 09h07
  3. Gerer des codes retour avec BulK Insert
    Par Macfurp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/11/2007, 17h58
  4. Problem avec le BULK INSERT
    Par Soulkeum dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 15/10/2007, 11h33
  5. Message d'erreur avec Bulk Insert
    Par Shivas dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 12h03

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