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 :

[c#][sqlserver]bulk copy vers une base sql server


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut [c#][sqlserver]bulk copy vers une base sql server
    Bonjour à tous,

    J'avais une petite question : est-il possible d'importer des données dans une base sql via bulk copy à partir d'un programme ? Par exemple, via un bout de code C#.
    Je sais qu'il est possible de faire cela avec le framework 2.0 où un nouvel objet existe pour cela mais je me place dans le cas du framework 1.1

    Mon but serait par exemple d'importer une datatable dans une db le plus rapidement possible et non via une grosse requête pleine de inserts.

    Merci.

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    A partir de ton datatable, tu génères des commandes insert en bloc de 100 ou 1000 bref ca ne dépend que de toi et par la suite tu les pompes vers la base de données : C'est ca l'objet de bulk insert ....
    Tu pourras ajouter le mutitreading pour accelerer .

    Bonne chance

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    Salut,

    Que veux-tu dire par "pompe" vers la base de données ?
    Je crée par exemple un grand string contenant 1000 requêtes séparées par des point-virgules et je l'éxécute d'un coup, simplement ?

    C'est déjà ce que je fais mais quand on parle de bulk copy, on parle de copy par de bas niveau, si le bulk copy c'est juste ça, je ne vois pas en quoi ce serait bas niveau et bcp plus rapide.


    Merci.

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    C'est justement ca le bulk copy.
    Il te suffit d'ajouter la gestion de l'execution asynchrone et tu viens de recréer le bulk copy !

    Mais qu'est ce que tu appelles par copy bas niveau ?
    Je te rappelle que ce n'est pas le client qui gère la manipulation des données d'un serveur en mode client/serveur, c'est le serveur lui même et tout le flux de données qui est reçu par le serveur est interpreter comme du texte pûr, alors ca ne sert à rien de te casser la tête.
    Si néanmoin, vous avez des soucis d'optimisation, il vous faut créer une procédure stockée pour avoir quelque chose qui ressemble à :

    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123456789
     
    exec maprocedure val1,val2,val3.....,valk
    .
    .
    .
    .
    .
     
    exec maprocedure val1,val2,val3.....,valk

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    Salut,

    Après petite recherche, il s'avère en fait que le bulk copy permet en fait de copier directement une datatable dans une table de la base et ce sans créer de requête sql !!
    Il suffit plus ou moins de faire un mapping des colonnes et de faire un copy().
    A mon avis, c'est ce qu'on entend par "bas niveau" (moi-même je ne comprenais pas exactement ce que ce terme voulait dire).

    Donc pour être plus clair, la datatable serait par exemple obtenue via une requête sql faisant en une recherche dans une DB A et ensuite, si le client le désire, il peut cliquer sur "sauver" et la datatable est enregistrée dans sa base locale.

    C'est ce que semble permettre le nouvel objet sqlbulkcopy de l'asp.net 2.0.

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Non, c'est faux !
    En fait, vous ne pouvez pas acceder une base de donnée client:serveur sans requête SQL !
    Quelle abération ?!
    Toutes ces fonctionalités sont wrappée par la classe, et c'est comme cela que ca marche !
    Je vais inviter des experts SQL à cette discution svp !

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

Discussions similaires

  1. caractères spéciaux vers une base sql server
    Par Air P-E dans le forum C#
    Réponses: 3
    Dernier message: 16/05/2011, 17h34
  2. convertir une base sqlserve .sdf vers une base sql server .mdf
    Par solitude dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/01/2010, 22h54
  3. Copie de table sur une base SQL Server 2005
    Par stephyugh dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/04/2008, 13h30
  4. Import Excel vers une base SQL Server / Framework 1.x
    Par myNonSpace dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/06/2007, 11h27
  5. Migrer un fichier excel vers une base sql serveur
    Par vdavid1982 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/07/2005, 16h26

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