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

SSIS Discussion :

Comment faire un truncate de toutes les tables d'un schéma ? [2005]


Sujet :

SSIS

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut Comment faire un truncate de toutes les tables d'un schéma ?
    Bonjour,

    J'ai un schéma dans SQL Server qui contient plusieurs tables sans relations.
    Je voudrais créer un package capable de faire un truncate réursif des tables se trouvant dans ce schéma.

    Comment faire un truncate de toutes les tables d'un schéma ?

    a+, =)
    -=Clement=-

    Configuration :
    SQL Server 2005
    Windows XP Pro SP3 32b

  2. #2
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Moi j'utiliserai une tâche d' exécution d'instruction T-Sql dans laquelle

    -je récupérerai le nom de mes objets à partir de la table sysobjects (type table)
    -j'ouvrirai un curseur sur cette requête
    -puis pour chaque nom de table j'effectuerai un truncate

  3. #3
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Perso j'utilise les table de INFORMATION_SCHEMA pour extraire mes nom de tables.
    Ensuite, je fait une boucle for each avec le noms de mes tables (d'habitude mes tables sont préfixées donc c'est plus facile de les identifier) et un execute sql à l'interieur qui fait un truncate). Simple et rapide

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Merci,
    Citation Envoyé par ygrim Voir le message
    Perso j'utilise les table de INFORMATION_SCHEMA pour extraire mes nom de tables.
    Ensuite, je fait une boucle for each avec le noms de mes tables (d'habitude mes tables sont préfixées donc c'est plus facile de les identifier) et un execute sql à l'interieur qui fait un truncate). Simple et rapide
    J'ai suivi ta méthode. C'est "simple" mais j'ai quand même joint une image qui montre des éléments de solution. Résolu.

    a+, =)
    -=Clement=-

    edit : damned je suis arrivé au bout de mon espace à pièce jointes
    Images attachées Images attachées  

  5. #5
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Merci pour les images de la solution.
    C'est bien pratique
    Alexandre Chemla - Consultant MS BI chez Masao

  6. #6
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    C'est clair,très pratique merci!

  7. #7
    Membre habitué
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Points : 191
    Points
    191
    Par défaut
    Bonjour ,
    Merci de m'expliquer d'avantage l'image .
    Je dois faire truncate de toutes mes tables , et j'ai pas pu le faire .
    J'ai pas bien saisi : pourquoi on ajoute une variable et aussi la requête select , elle n'est pas complète .
    Mercii

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    Voici des explications supplémentaires :

    User::VARIABLE_TABLE_NAME récupère le résultat de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select TABLE_NAME from INFORMATION_SCHEMA.TABLES where table_schema = 'FOOBAR'
    Elle contient plusieurs lignes que l'on doit stocker dans une variable User::VARIABLE_CURRENT_TABLE qui change à chaque For Each.

    Ce que l'on ne voit pas sur l'image : dans le For Each, dans la partie Variable Mapping, il faut mapper User::VARIABLE_CURRENT_TABLE avec Index 0.

    a+, =)
    -=Clement=-

  9. #9
    Membre habitué
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Points : 191
    Points
    191
    Par défaut
    Merci infiniment clementratel pour vos explications ,

    Je suis débutante dans ce domaine , je m'excuse pour le dérangement
    mais j'ai toujours des ambiguïtés

    Merci de m'expliquer la dernière étape (truncate )

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    Le menu Expressions d'un composant SSIS permet de donner des valeurs personnalisées aux propriétés du composant. Ici on choisit la propriété SqlStatementSource, qui correspond à la requête exécutée. On saisir l'expression correspondante comme une chaîne de caractères. Par exemple "SELECT 'Hello world'". L'intérêt étant de pouvoir générer une chaîne de caractères dynamiquement. Ici la variable User::VARIABLE_CURRENT_TABLE sert à générer une chaîne différente à chaque passage dans le For Each.

    a+, =)
    -=Clement=-

  11. #11
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre solution .
    Mais j’ai une petite question les deux variables que vous avez crée , ils sont de quels types ?

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Bonsoir,

    User::VARIABLE_TABLE_NAME est de type Object.
    Le ResultSet retournant plusieurs lignes on est obligés d'utiliser ce type.

    User::VARIABLE_CURRENT_TABLE est de type String.
    Elle contient le nom d'une table (quand les For Each seront tous passés, on pourra dire qu'elle aura contenu tous les noms de tables stockés dans la variable Object).


    Question suivante ?

    a+, =)
    -=Clement=-

  13. #13
    Membre habitué
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Points : 191
    Points
    191
    Par défaut
    Merci avec un grand M à clementratel
    c bon ça marche , je peux supprimer les données de toutes mes tables

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2009, 10h18
  2. Réponses: 3
    Dernier message: 21/08/2008, 18h05
  3. Comment remplir un Dataset avec toutes les tables d'une db?
    Par Mr_Welby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/05/2007, 15h29
  4. Réponses: 1
    Dernier message: 11/09/2006, 10h16
  5. Réponses: 4
    Dernier message: 06/09/2006, 14h04

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