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

Développement SQL Server Discussion :

Récupérer le contenu d'une table


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Points : 50
    Points
    50
    Par défaut Récupérer le contenu d'une table
    Bonjour,

    J'ai une question qui a priori est très simple. J'effectue une restauration de sauvegarde d'une base SQL sous un autre nom, régulièrement. Pour cette base restaurée, j'utilise toujours le même nom. Mais j'aimerais au préalable mettre de côté les enregistrements d'une table afin de pouvoir la réalimenter telle qu'elle était, après avoir effectué ma restauration.

    J'ai voulu utiliser le générateur de scripts dans SQL Management studio, mais dans tous les cas je ne trouve que des scripts permettant d'impacter la structure de la table, et non les enregistrements...Y'a-t-il un moyen simple de générer un script d'insert into ?

    Merci !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Pour copier seulement la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TABLE2 AS SELECT * FROM TABLE1 where 1=2
    Pour copier les données et la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TABLE2 AS SELECT * FROM TABLE1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Bonjour et merci Aiglon !

    Le problème est que cette manipulation m'oblige à avoir les données "source" à disposition dans une base de donnée au moment où je lance la requête, ce qui n'est plus le cas ici :

    J'ai ma table "TOTO" qui se trouve dans la base "BDD_Backup"
    J'ai la même table "TOTO" qui se trouve dans la base "BDD_Prod" (le plus souvent vide d'ailleurs)

    J'effectue un BAK de la base BDD_Prod tous les soirs pour la restaurer en BDD_Backup. Par contre, la table TOTO de la base BDD_Backup contient des données qui lui sont propres et ne doit pas être écrasée par le contenu de la table TOTO de BDD_Prod. Du coup je cherche un moyen de sauver BDD_Backup.TOTO à l'aide d'un script d'insert (par exemple), afin de pouvoir, une fois la restauration faite, réalimenter BDD_Backup.TOTO....

    Avec ce cas de figure, la requête proposée ne me semble pas efficace

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Citation Envoyé par Aiglon13 Voir le message
    Pour copier seulement la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TABLE2 AS SELECT * FROM TABLE1 where 1=2
    Pour copier les données et la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TABLE2 AS SELECT * FROM TABLE1
    Sauf erreur de ma part, cette syntaxe ne fonctionne pas sous SQL Server.

    Vous pouvez par contre faire sur le même principe :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    INTO NouvelleTable
    FROM TableExistante

    Pour ce qui est du problème de restauration, il n'est pas possible de restaurer "certaines tables et pas d'autres"...
    il faut donc garder d'une façon ou d'une autre les données de la table bak.toto avant la restauration, et les réinjecter après.

    comment effectuez vous votre restauration ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Je sais bien qu'il est impossible de restaurer certaines tables et pas d'autres : c'est pour cela que je cherche une alternative. Je restaure complètement la base (manuellement, dans Management Studio via les fonctions dispos) et je cherche un moyen pour mettre de côté le contenu de la table avant la restauration afin de récupérer ensuite le contenu de la table après la restauration.

    Ce fonctionnement n'est destiné qu'à être temporaire avant la mise en place d'un développement effectuant la synchro des deux bases en temps réel. (Hé oui je suis en plein dedans...lol)

    Edit : J'ai bien trouvé quelques sources sur le net permettant la génération de scripts INSERT, mais la plupart sont anciens et n'ont pas l'air de tourner sous SQL 2008...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Mais pourquoi dans ce cas ne pas effectuer un export de la table uniquement et l'importer dans l'autre base ?

    http://www.kodyaz.com/articles/sql-s...pt-wizard.aspx

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Aaaaah, voilà, c'est cette fonctionnalité que je cherchais...Oui, merci, avec ça je devrais me débrouiller !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Super , bonne continuation, n'oublies pas de passer le sujet en résolu

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Vous pouvez aussi automatiser tout le process avec un script dans ce genre la (il faudra ajouter la gestion des erreurs):

    Code SQL : 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
     
    --"sauvegarde" des données de la table toto
    SELECT * 
    INTO #T
    FROM BDD_Backup..toto
     
     
    RESTORE DATABASE [BDD_Backup] FROM ...
    GO
     
     
    --suppression des données de prod de la table toto
    DELETE FROM BDD_Backup..toto
     
    --reinjection des données de backup dans la table toto
    INSERT INTO BDD_Backup..toto
    SELECT *
    FROM #T
     
    DROP TABLE #T

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Ok merci pour ces infos. Mais au final j'ai simplement généré un script, et ça m'a suffit de cette manière !

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

    J'ai publié un tutoriel là-dessus (en Français celui-ci ).
    On le trouve par Google en tapant "SQL script table données" ...

    @++

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Merci +1

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2009, 10h36
  2. Réponses: 4
    Dernier message: 05/08/2008, 15h22
  3. [MySQL] Récupérer contenu d'une table dans une liste dérouante
    Par gorgoroth dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/11/2007, 09h15
  4. Réponses: 7
    Dernier message: 12/06/2007, 14h59
  5. Réponses: 2
    Dernier message: 29/05/2007, 14h56

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