SSIS: Convertire tipi di dati in un ciclo foreach

venerdì 02 gennaio 2009 - 18.56

the_driver Profilo | Senior Member

Ciao a tutti, utilizzo SQL Server 2005 e l'ambiente SSIS in quanto sto trasportando dei dati tra 2 tabelle eterogene.

Ho un problema:

In control flow, ho correttamente inserito un TASK SQL e definito una variabile object che viene utilizzata in un oggetto FOREACH LOOP.

L'oggetto object che viene gestito dal FOREACH ha al suo interno 4 colonne (ogni risultato/record è formato da 4 campi),dovrei convertire (string to integer) 2 di questi 4 campi.

Come posso fare?


Pensavo di inserire all'interno dell'oggetto FOREACH LOOP un oggetto DATA FLOW TASK,quindi in DATA FLOW avrei inserito un DATA CONVERTER. Ma come faccio a specificare,in DATA FLOW, la sorgente dati (che deve essere quella del FOREACH)?
Quindi, una volta convertiti,come li riprendo nel foreach? grazie!


Il metodo che sto usando è corretto?




Infine, come faccio a gestire,in CONTROL FLOW un evento SELECT - CASE ? grazie

alx_81 Profilo | Guru

>Ciao a tutti, utilizzo SQL Server 2005 e l'ambiente SSIS in quanto
>sto trasportando dei dati tra 2 tabelle eterogene.
Ciao!

>Ho un problema:
>In control flow, ho correttamente inserito un TASK SQL e definito
>una variabile object che viene utilizzata in un oggetto FOREACH LOOP.

>L'oggetto object che viene gestito dal FOREACH ha al suo interno
>4 colonne (ogni risultato/record è formato da 4 campi),dovrei
>convertire (string to integer) 2 di questi 4 campi.
>Come posso fare?
>Il metodo che sto usando è corretto?
Io seguirei un'altra strada.. Che ne dici invece di fare la conversione tramite T-SQL direttamente nell'Execute SQL Task?
una cosa tipo:

SELECT campo1convertito = CAST(campo1 as Int) , campo2convertito = CAST(campo2 as Int) , campo3 , campo4 FROM tuatabella WHERE <tuacondizione>

In questo modo, mappi nel foreach le variabili definite col tipo già corretto (due integer e le altre due come ti servono) e sei già a posto. Il dataflow serve solamente per definire la trasformazione e la copia. Non so perchè usi un execute sql ed un foreach, perchè non ce l'hai spiegato, ma credo che la tua trasformazione si possa fare con un solo DataFlow Task nel control flow. Definisci una sorgente (che è quella dell'executesql task se non ho capito male) e poi la porti verso una destinazione, ed il gioco è fatto.

>Infine, come faccio a gestire,in CONTROL FLOW un evento SELECT - CASE ?
Cosa intendi? Mi verrebbe da rispondere con una SELECT CASE , ma devi illustrarmi il problema in maniera più dettagliata perchè così non posso aiutarti.

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5