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 :

Tâche d'execution de requete SQL qui supprime ttes les tables d'une BD [Fait]


Sujet :

SSIS

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Tâche d'execution de requete SQL qui supprime ttes les tables d'une BD
    Bonjour,

    Je vous explique ce que je veux faire : je voudrai réaliser un package qui transfère des données d'une base de données source à une base de données destination, après que ces données soient copiées de la source à la destionation je voudrai que les données sources soient supprimées.. Pour ce, je voudrai réaliser une tâche d'execution de requête SQL qui supprime toutes les données des tables de la BD source..

    Le problème c'est que j'ai une base de données qui contient plus de 500 tables, et ce n'est pas pratique d'écrire des DELETE FROM nom_table 500 fois.. J'ai entendu dire que je puvais le faire avec du SQL dynamique mais entre nous je l'ignore et je ne l'ai jamais utilisé.

    Comment faire pour résoudre ce pb

    merci bcp

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez par exemple exécuter :

    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
    -- paramétrage du schéma, par défaut dbo
    DECLARE @monSchema NVARCHAR(128) SET @monSchema = 'monSchema'
     
    -- Récupération de la liste des tables contenues dans le contexte
    -- de base de données courant et pour le schéma paramétré
    DECLARE curTables CURSOR FOR
    	SELECT TABLE_NAME
    	FROM INFORMATION_SCHEMA.TABLES
    	WHERE TABLE_CATALOG = DB_NAME()
    	AND TABLE_SCHEMA = @monSchema
    	AND TABLE_NAME NOT LIKE 'sys%'
    	AND TABLE_NAME NOT LIKE 'dt%'
    FOR READ ONLY
     
    -- Pour chaque nom de table récupéré dans le curseur,
    -- création de la commande de suppression des lignes
    DECLARE @nomTable NVARCHAR(128),
    		@SQLCommand NVARCHAR(128)
    OPEN curTables
    FETCH NEXT FROM curTables INTO @nomTable
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	SET @SQLCommand = 'DELETE FROM ' @monSchema + '.' + @nomTable
     
    	PRINT @SQLCommand -- Affichage de la commande qui sera exécutée si la ligne suivante n'est plus en commentaire
     
    	--EXEC (@SQLCommand) -- Exécution de la commande
    	FETCH NEXT FROM curTables INTO @nomTable -- table suivante !
    END

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci bcp pour ta réponse, je te suis très reconnaissante vraiment.. mais le code que tu as écris c'est quel langage? parce que je voies ce n'est pas du langage SQL.. et je voudrai bien l'apprendre.. tu as des tutos

  4. #4
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    Bonjour,

    Ceci est une procédure Transact SQL... tu trouvera un tuto ici : http://sqlpro.developpez.com/cours/s...r/transactsql/

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Ce que je voudrai faire est de supprimer le contenu des tables, les tables je les garde

  6. #6
    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
    Dans ce cas (qui n'est pas ton titre de topic), tu remplaces le 'DELETE FROM ' par 'TRUNCATE TABLE '
    Alexandre Chemla - Consultant MS BI chez Masao

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Rectification
    Citation Envoyé par Jinroh77 Voir le message
    Dans ce cas (qui n'est pas ton titre de topic), tu remplaces le 'DELETE FROM ' par 'TRUNCATE TABLE '
    Ceci pour toutes les tables de la base de données? parce que TRUNCATE TABLE nécessite de spécifier le nom de la table, alors que moi j'ai une bonne centaine de tables à supprimer le contenu

    Merci bcp

  8. #8
    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
    Citation Envoyé par msi16 Voir le message
    Ceci pour toutes les tables de la base de données? parce que TRUNCATE TABLE nécessite de spécifier le nom de la table, alors que moi j'ai une bonne centaine de tables à supprimer le contenu

    Merci bcp
    C'est justement le principe du curseur donné par elsuket qui permet de lister et d'exécuter la commande sur l'ensemble des tables de votre schéma (spécifié en paramètre sur la première commande)
    Alexandre Chemla - Consultant MS BI chez Masao

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Le schema joue le rôle de base de données? je n'ai pas d'expériences en langage MySQL, et j'avoue que c'est nouveau pour moi

    Mais j'ai bien compris le code

    Mais je pense que ça ne sera pas supporté par la fenêtre de code SQL de la tâche d'execution de requête SQL d'Integration Services..

  10. #10
    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 ,

    C'est un lien qui peut vous aider .
    suppression des données de toutes les tables
    http://www.developpez.net/forums/d59...a/#post5863510

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/10/2012, 09h43
  2. Réponses: 4
    Dernier message: 05/08/2011, 17h19
  3. Supprimer toutes les tables d'une base
    Par pierre24 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/11/2008, 17h18
  4. Réponses: 3
    Dernier message: 15/05/2006, 17h29
  5. Supprimer TOUTES les tables d"une bd
    Par perlgirl dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 14/12/2004, 12h12

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