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 :

[SSIS] [2K5] Copie de table à partir d'un fichier plat


Sujet :

SSIS

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [SSIS] [2K5] Copie de table à partir d'un fichier plat
    bonjour,
    Je voulais savoir s'il était possible, à partir d'une liste de tables comprises dans un fichier plat, de copier dynamiquement le contenu de ces tables d'une base à l'autre. J'ai bien essayé de le faire avec la fonction commande OLE DB, mais je n'arrive pas à utiliser de variable pour le nom de table.
    Merci

  2. #2
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    Je ne comprend pas très bien ton problème,

    pour copier le contenu d'une table d'une base A vers une table d'une base B,

    tu prend une source en base A et une destination en base B.

    Pourquoi t'embêter avec des variables et un fichier plat ?

  3. #3
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Si tu connais la BDD source, la BDD destination et que la liste de table est fixe voire meme pour un unique traitement. Tu n'a pas du tout besoin de te prendre la tête avec des variables ^^

    Et ca prend à tout casser 10 min a faire le plus.

    ps : si tes tables sont a volume important je te conseille de distinguer comme ceci :

    1 table-> une tâche

    regarde les tutos disponibles MSBI il y a un exemple.

    Par ailleurs, les SGBD ne sont pas les memes et que tu as des dates, fait attention il peut y avoir des transformation à faire au niveau du format. Sinon les données seront erronées en destination.

    Citation Envoyé par matman Voir le message
    bonjour,
    Je voulais savoir s'il était possible, à partir d'une liste de tables comprises dans un fichier plat, de copier dynamiquement le contenu de ces tables d'une base à l'autre. J'ai bien essayé de le faire avec la fonction commande OLE DB, mais je n'arrive pas à utiliser de variable pour le nom de table.
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Eh bien, c'est une solution qui doit être paramétrable.
    En fait, je dois créer un outil qui doit permettre la livraison de modifications de données de paramétrage d'un logiciel d'une base à l'autre. Néanmoins, je ne peux copier toutes les tables, car dans la même base se trouvent des tables concernant les données de paramétrage du logiciel et les données utilisateur. Il faut donc que l'utilisateur de la solution puisse choisir les tables à copier afin de ne pas écraser les données utilisateur. De plus certaines tables créees spécifiquement pour des projets sont à livrer en plus selon les livraisons.

  5. #5
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    Pour le paramétrage,

    je ne crois pas que tu puisses choisir le nom d'une table en source à partir d'un paramètre. Essaye toujour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM @varTableName
    inclut la variable varTableName qui met à jour l'instruction SQL exécutée par une tâche d'exécution SQL
    http://msdn.microsoft.com/fr-fr/libr...6(SQL.90).aspx

    Sinon, tu peux créer différents packages d'alimentation et les lancer conditionnellement à partir d'un fichier .bat ou d'une tâche d'exécution de package qui est paramétrable :

    http://msdn.microsoft.com/fr-fr/libr...4(SQL.90).aspx

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci pour ces pistes, mais malheureusement, le @variable ne fonctionne pas dans le module commande OLE DB... Il me semble qu'au final la meilleure piste soit dans le transfert d'objets SQL server. Il faut juste que j'arrive à trouver comment créer une collection pour remplir le paramètre table list à partir de mon fichier plat.
    Quelqu'un connaitrait-il le format collection(l'idée serait de modifier le paramètre table list paramètre via un dtsConfig ou une variable globale)

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

    Pour l'objet OLEDB Command on peut passer en paramètre des variables, pour cela il faut utiliser la propriété Expressions du package et trouver la propriété OLEDBCommand.SqlCommand ou quelque chose comme ça. Ensuite, on construit la String comme pour les autres type Expressions

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci,
    Autre petit point, j'ai besoin, pour affecter une collection à l'expression Table List d'un objet collection. J'ai donc crée une variable globale de type object que j'ai initialisé avec une collection(de type concret ArrayList) dans un script. Or, quand j'essaie d'affecter cette variable à l'expression, il m'interdit de le faire à cause d'un problème de type.
    Le type collection dans les expressions est-il en fait une chaine de caractère avec un caractère spécial entre deux valeurs ou bien faut-il réellement créer un objet d'un type qui implémente l'interface Collection et si oui quelqu'un sait-il lequel?

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bon alors, j'ai réussi à trouver comment modifier une tache transfert d'objets SQL server. Pour pouvoir modifier la propriété tablesList, il faut passer par un script qui va modifier l'objet transfert d'objets. Or il est déconseillé de modifier le package dynamiquement en cours d'exécution, il faut donc créeer un package qui contient cette tâche et la modifier. Voici le lien où tout est expliqué :
    http://sqldb.wordpress.com/2006/06/2...kages-in-ssis/

    maintenant reste plus qu'à tester

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    J'ai réussi à faire fonctionner la solution avec le transfert d'objets. Pour info si vous deviez faire la même chose, attention au problème suivant pour le transfert d'objets :
    http://www.developpez.net/forums/d75...er-schema-dbo/
    et évitez de transférer plus de 50 objets pour chaque instance de transfert d'objets sinon SSIS risque de ne pas tout transférer.

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    J'ai réussi à faire fonctionner ma transformation, elle fonctionne, si vous voulez plus d'infos n'hésitez pas à m'envoyer un MP

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

Discussions similaires

  1. [SSIS] [2K5] Remplir la table de fait
    Par kellerman_com dans le forum SSIS
    Réponses: 9
    Dernier message: 16/02/2011, 09h50
  2. [SSIS] [2K5] Update insert à partir d'un fichier plat
    Par satanas313 dans le forum SSIS
    Réponses: 1
    Dernier message: 26/06/2009, 14h51
  3. [SSIS] [2K5] Chargement de table avec update
    Par hayassinet dans le forum SSIS
    Réponses: 4
    Dernier message: 12/06/2009, 15h30
  4. [SSIS][2K5] Preciser la table d'insertion
    Par tchraad dans le forum SSIS
    Réponses: 1
    Dernier message: 01/04/2008, 10h36
  5. Réponses: 2
    Dernier message: 21/03/2008, 16h08

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