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

Adaptive Server Enterprise Sybase Discussion :

insert des données sur une autre table


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2003
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2003
    Messages : 148
    Points : 118
    Points
    118
    Par défaut insert des données sur une autre table
    Bonjour,
    J'ai une table contenant 400000 lignes, nous voulons mettre en place une procédure stockée qui va inserer ces lignes dans une autre table. nous ne voulons pas passer une par bcp. afin d'éviter de remplir le journal de transaction de notre base de données, je voudrais mettre en place une boucle avec while afin d'inserer à chaque fois 10000 lignes avec la commande insert into table1 select * from table2, comment puis-je faire ?
    je precise que sur cette table table2, il n'ya pas une primary key.
    Merci de vos suggestions.
    Cordialement.

  2. #2
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 134
    Points : 168
    Points
    168
    Par défaut
    Je propose le curseur (incomplet/non testé!!!):

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    declare @colA int,
    @colB char(10),
    @colc int,
    @insertCount int,        -- number of rows inserted in the current batch
    @batchNumLines int    -- size of each batch of inserts
     
    select @insertCount = 0, @batchNumLines = 10000
     
    declare csrTableSource cursor
    for select * from TableSource
    for read only
     
    open csrTableSource 
    fetch csrTableSource into @colA,@colB,@colC
     
    while @@sqlstatus = 0
    begin
     
        if @insertCount = 0
            begin tran
     
        insert into tableDestination values (@colA,@colB,@colC)
        -- handle proprerly return status here...
     
        select @insertCount = @insertCount + 1
     
        -- if we inserted @batchNumLines lines, we can commit
        if @insertCount = @batchNumLines
        begin
            select @insertCount = 0
            commit tran 
        end
     
        fetch csrTableSource into @colA,@colB,@colC
     
    end
     
    close csrTableSource
    deallocate cursor csrTableSource
     
    commit tran -- commit remaining lines
    Vous pouvez rajouter un dump tran ou une routine qui vérifie l'espace de log disponible en même temps que le commit.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Hello dngaya,

    Ne serait-il pas possible de faire un "fast bcp" ?
    C'est à dire insérer les enregistrements par bcp dans la nouvelle table sans index (pas de log de transaction, j'espère ne pas raconter de bourde) puis créer les index une fois le bcp terminé.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/02/2012, 22h51
  2. Réponses: 12
    Dernier message: 06/08/2010, 15h00
  3. [AC-2003] Insérer des données dans une autre table
    Par franckimmo dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/08/2009, 17h51
  4. update avec des données d'une autre table
    Par corto31 dans le forum Requêtes
    Réponses: 13
    Dernier message: 10/07/2008, 16h40
  5. [Conception] Rerchercher des informations sur une autre table
    Par tilou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/05/2006, 19h35

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