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

MS SQL Server Discussion :

[DTS] Problème avec clause WHERE sur Date


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 26
    Points : 19
    Points
    19
    Par défaut [DTS] Problème avec clause WHERE sur Date
    Bonjour,

    J'essaye d'importer des données et je rencontre quelques problèmes.
    Tout d'abord, j'importe des données d'une base de données oracle vers SQL Server à l'aide d'un lot DTS.

    J'importe 5 champs identiques de 14 tables oracle vers 1 table sous SQL Server.
    Jusqu'ici, tout va bien, sauf que je lui spécifie un critere date et un autre critere sans quoi mon import vaut 1,5 millions de lignes.

    Le problème c'est que pour spécifier mon critere date, j'utilise des paramètres puisque ma date_debut = dernier enregistrement de ma base historique et
    date_fin = getdate() - 1

    Mes unions marchaient très bien jusqu'à ce que je rajoute mon autre critère...depuis y a pas moyen que ca passe.
    J'ai beau chercher, je ne vois pas comment m'y prendre car il faut évidemment penser qu'il y a beaucoup de données, je ne peux pas me permettre d'appeler une fonction dans ma clause WHERE à chaque traitement par exemple.

    En espérant avoir été claire, je vous copie colle un extrait de mon code.

    Merci,

    Clémence

    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
     
    select * from
    (
    select
    DATE, E,  D, C, V
    from TABLE1
     
    union
     
    select
    DATE, E,  D, C, V
    from TABLE2
     
    ...
    )
    WHERE (DATE between 
    to_date(?, 'dd/mm/yy hh24:mi') and to_date(?, 'dd/mm/yy hh24:mi'))
    AND E like '%/2/%' or E like '%/5/%'
    ou ? sont mes 2 paramètres calculés précédemment

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut

    peux tu étre plus précise quand tu dis :
    Mes unions marchaient très bien jusqu'à ce que je rajoute mon autre critère...depuis y a pas moyen que ca passe.
    quel est le message d'erreur?

    Merci

    Michel

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    Quel est le message d'erreur renvoyé ? Comment sont renseignées les variables "?" (car ça n'est pas du SQL ...) ? Peut-on avoir un "écho" de la requête avec un exempe de valeurs pour tes dates ?
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Pour répondre à Michel, je voulais dire qu'avant, j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE (DATE between 
    to_date(?, 'dd/mm/yy hh24:mi') and to_date(?, 'dd/mm/yy hh24:mi'))
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WHERE (DATE between 
    to_date(?, 'dd/mm/yy hh24:mi') and to_date(?, 'dd/mm/yy hh24:mi'))
    AND E like '%/2/%' or E like '%/5/%'
    et que ça ne posait pas de problème à l'exécution.

    Sinon, comme je l'ai dit j'exécute des lots DTS, d'où le fait que je puisse mettre des paramètres.

    Le message renvoyé est le suivant :
    "Erreur dans la liaison du paramètre source. Vérifiez que la spécification InputGlobalVaribleNames correspond à la requête."

    Enfin mes ? correspondent à ex. : 26/06/2006 00:00 et 26/06/2006 23:45

    Pour finir, je me demande si je n'aurais pas dû poster dans le forum SqlServer, désolée si c'est le cas.

    Merci

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par bibou
    Pour finir, je me demande si je n'aurais pas dû poster dans le forum SqlServer, désolée si c'est le cas.

    Merci
    Je pense que oui, donc je déplace

    Pour info, TO_DATE est une fonction spécifique à Oracle, je crois qu'il faut utiliser CAST (... AS DATE) en SQL Server.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Merci et désolé pour le spam alors

    Sinon, oui to_date est spécifique à oracle mais sur dans un lot DTS, tu spécifies la source et la destination. Ici, comme la source est oracle, je dois utiliser des fonctions oracle

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/07/2011, 11h29
  2. Réponses: 3
    Dernier message: 16/02/2006, 16h58
  3. [SQL] clause Where sur un booléen
    Par mosquitout dans le forum Access
    Réponses: 3
    Dernier message: 21/12/2005, 21h29
  4. Clause Where sur une Date
    Par Zebulonn dans le forum Installation
    Réponses: 31
    Dernier message: 20/10/2005, 11h56
  5. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10

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