Requete dans un lot dts

Signaler
Messages postés
106
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
1 octobre 2020
-
Messages postés
268
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
salut tout le monde

voila ma question

j'ai une requete qui fait les actions suivantes
- verification de la presence d'une table (status_export)
  si oui on la supprime
-copie de la structure dune deuxieme table (status...qui va servir de source)
-insert du contenu de status dans status export
-transformation de deux champs de la table status_export
 (format de date et d'heure)
-supression dans status_export des lignes qui ne correspondent pas à la date du jour
et pour finir j'aimerais exporter la table status_export vers un fichier txt

est il possible de faire ca avec un lot dts ?
j'ai essayé ... mais je ne maitrise pas du tout les différent éléments disponibles
dans le concepteur dts ... j'ai éssayé plein de lots différents ... mais je n'y arrive pas !!
j'ai besoin d'un coup de main.car mes debuts avec dts sont laborieux
MERCI BEAUCOUP
ah ... j'oubliais ... voila la requete ....elle fonctionne bien !
--------------------------------------------------------------------------------
/* on teste si la table existe - si oui on la supprime */
/*-----------------------------------------------------*/if exists (select * from dbo.sysobjects where id object_id(N'[dbo].[STATUS_EXPORT]') and OBJECTPROPERTY(id, N'IsUserTable') 1)
drop table [dbo].[STATUS_EXPORT]

/* on recopie la structure de la table status dans STATUS_EXPORT */
/*---------------------------------------------------------------*/
select * into STATUS_EXPORT
from STATUS
where 1=2

/* on copie les données de status dans STATUS_EXPORT */
/*---------------------------------------------------*/
insert into STATUS_EXPORT
select [status_id],[status_ident],[status_date],[status_starttime],[status_ani],[status_waitingtime],
[status_talktime],[status_wrapuptime],[status_status],[status_detail],[status_argued],[status_positive],
[status_transfert],[status_comtype],[status_numcamp],[status_camptype],[status_layer],[status_user],
[status_idlink],[rec_cle]
from STATUS

/* modification du format de status_date et status_startime au format MySql */
/*--------------------------------------------------------------------------*/
update STATUS_EXPORT
set status_date = left(status_date, 4) + '-' + substring(status_date, 5, 2) + '-' + right(status_date, 2),
status_starttime = left(status_starttime, 2) + ':' + substring(status_starttime, 3, 2) + ':' + right(status_starttime, 2)

/* on supprime les lignes differentes de la date du jour dans status_export */
/*---------------------------------------------------------------------------*/
delete from STATUS_EXPORT
where STATUS_DATE not in (
SELECT CONVERT(VARCHAR(10), GETDATE(), 120))

4 réponses

Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
7
Avec des tâches de scripts SQL çà doit marcher sans problèmes, en découpant les différentes portions de ton scripts dans différentes tâches.

Petit commentaire, c'est quoi l'interêt que tu as à faire çà :

/* on recopie la structure de la table status dans STATUS_EXPORT */
/*---------------------------------------------------------------*/
select * into STATUS_EXPORT
from STATUS
where 1=2

/* on copie les données de status dans STATUS_EXPORT */
/*---------------------------------------------------*/
insert into STATUS_EXPORT
select [status_id],[status_ident],[status_date],[status_starttime],[status_ani],[status_waitingtime],
[status_talktime],[status_wrapuptime],[status_status],[status_detail],[status_argued],[status_positive],
[status_transfert],[status_comtype],[status_numcamp],[status_camptype],[status_layer],[status_user],
[status_idlink],[rec_cle]
from STATUS

Au lieu de çà :

select * into STATUS_EXPORT
from STATUS

Et tu finis par une tâche de d'export (pour la créer tu peux partir de l'assistant d'exportaion de données c'est sans doute plus simple, en lui disant de sauvegarder le lot DTS à la sortie)

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
Messages postés
106
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
1 octobre 2020

salut

merci beaucoup pour le conseil au sujet de:

select * into STATUS_EXPORT
from STATUS

c'est quand meme mieux

pour l'export vers un txt c'est bon j'ai trouvé
(c'était pas bien difficile)

mais quand je suis dans le concepteur dts
quel type de tache utiliser pour pouvoir
executer un script sql - est ce une tache de transformation
de donnée .... et comment la configurer ?
c'est la ou je suis un peu perdu !
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
7
C'est une tâche de scripts SQL ou T-SQL

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
Messages postés
268
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
3
pour aller un peu plus loin dans l'optimisation je pense que la conversion de champs et la selection des champs du jour peuvent être faite directement dans la requette  SELECT INTO :

select 
   [status_id],
   [status_ident],
   left(status_date, 4) + '-' + substring(status_date, 5, 2) + '-' + right(status_date, 2) as [status_date],
   left(status_starttime, 2) + ':' + substring(status_starttime, 3, 2) + ':' + right(status_starttime, 2) as [status_starttime],
   [status_ani],
   [status_waitingtime],
   [status_talktime],
   [status_wrapuptime],
   [status_status],
   [status_detail],
   [status_argued],
   [status_positive],
   [status_transfert],
   [status_comtype],
   [status_numcamp],
   [status_camptype],
   [status_layer],
   [status_user],
   [status_idlink],
   [rec_cle]
into
   STATUS_EXPORT
from
   STATUS
where
   STATUS_DATE = GETDATE();