Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité régulier
    Inscrit en
    octobre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 18
    Points : 6
    Points
    6

    Par défaut Génération et utilisation de Scripts générés par SSMS

    Bonjour,

    J'utilise SQL Server 2008. J'aurais deux questions concernant les scripts générés en utilisant (Tasks> generate Scripts) de SSMS.
    Lorsque je lui demande de me générer le script data d'une table il me génère un lot de requête de type :

    insert table (champ1, ..., champn) values (val1, ... valn)
    insert table (champ1, ..., champn) values (val1, ... valn)
    ...
    insert table (champ1, ..., champn) values (val1, ... valn)

    le problème c'est que vu le volume de donnée il me génère un fichier script qui fait prés de 1 Go...
    Résultat je ne réussis pas à ouvrir ce script via SMS pour l’exécuter sur ma table (a priori le fichier est trop gros...)

    J'ai donc pensé a lui faire générer le script comme peut le faire SQLYog (Client MySQL) de la forme
    insert table (champ1, ..., champn) values
    (val1, ... valn),(val1, ... valn),(val1, ... valn)
    ce qui me ferait gagner pas mal de place, mais je n'ai pas trouvé l'option (celles dispo depuis le bouton Advanced). Quelqu’un sait'il comment faire ?

    Autre question toujours lié à la taille de mon script si ma première hypothese ne trouvait pas de solution, c'est comment faire jouer un gros fichier de script à SQL Server sans passer par SMS ?

    Merci de vos réponses à venir.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro Frédéric BROUARD
    Expert SGBDR & SQL
    Inscrit en
    mai 2002
    Messages
    13 294
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric BROUARD
    Localisation : France

    Informations professionnelles :
    Activité : Expert SGBDR & SQL
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 13 294
    Points : 27 313
    Points
    27 313

    Par défaut

    A priori s'il s'agit de réinsérer tout un lot de lignes d'une table dans une autre, il est peu performant de le faire par le biais des INSERT. Il vaut mieux utiliser une insertion binaire en mode natif via fichier de données.
    Pour cela vous devez utiliser bcp.exe (en ligne de commande) pour générer le fichier binaire d'export, puis au choix bcp.exe ou la commande BULK INSERT pour l'import.
    Ceci ira 10 à 1000 fois plus vite qu'un lot de commande INSERT en sus de générer une fichier beaucoup plus petit...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
    http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Invité régulier
    Inscrit en
    octobre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Merci pour la réponse. Effectivement ca me génère un fichier de 150 Mo à la place d'un fichier d'1 Go et cela importe mes ~1 359 000 lignes en moins de 40 s

    Ca fonctionne bien sur ma plateforme de recette, sous ensemble de plateforme de prod.Pour la prochaine fois j'utiliserai cette méthode mais je me trouve quand même avec mon premier fichier à intégrer (le script SQL) provenant de la prod et fourni par mon client.

    Je suis d'accord ce sera vraisemblablement très long mais comment le faire en ligne de commande.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •