Aiuto per Integration Service

lunedì 22 novembre 2010 - 13.26
Tag Elenco Tags  Visual Studio 2008  |  SQL Server 2008 R2  |  SQL Server 2008  |  SQL Server 2005

mcfede88 Profilo | Newbie

Salve a tutti, sto iniziando a vedere Integration Service su Visual Studio 2008 e Sql Server 2008 da pochi giorni.

La mia necessità e prendere i dati da una vista, cambiare le dimensioni dei campi, per esempio se il campo ID è di 5 io lo devo far diventare di 7 e tutti gli ID che originalmente sono così 12345 diventeranno così 0012345.

Ed anche troncare un campo di testo da 80 caratteri farlo passare a 40 cancellando il testo in eccesso.

Un'altra cosa ho provato a far un esportazione dalla vista ad un file flat ed alcune colonne le unisce ad altre nel file flat. Come posso fare?


Grazie mille a tutti

dinoxet Profilo | Senior Member


La mia necessità e prendere i dati da una vista, cambiare le dimensioni dei campi, per esempio se il campo ID è di 5 io lo devo far diventare di 7 e tutti gli ID che originalmente sono così 12345 diventeranno così 0012345.
>IMMAGGINO CHE TU DEBBA SCRIVERE I RECORD DI QUESTA VISTA IN UNA TABELLA STRUTTURATA CON I CAMBIAMENTI DI CUI SOPRA.
>QUINDI TI SUGGERIREI DI CREARE UN PACCHETTO DI IMPORTAZIONE (CHE PUOI SALVARE COME PACCHETTO DI INTEGRATIO SERVICE SE LO DEVI UTILIZZARE METODICAMENTE) CHE SCRIVE IN DETTA TABELLA
>TI CONSIGLIEREI DI CREARE UNA VISTA DI QUESTA VISTA CHE GIA VEDA IL CAMPO ID CON 7 CARATTERI ED I ZERI NECESSARI PRIMA ED IL CAMPO TESTO TRONCATO A 40.


MI RENDO CONTO DI ESSERMI SPIEGATO UNA SCHIFEZZA MA SE POSTI IL CREATE DELLA TABELLA E DELLA VISTA TI FACCIO UN ESEMPIO
POSTE ANCHE QUALCHE INSERT DI ESEMPIO



DINOXET
__________________________________________
impossible is only a word

mcfede88 Profilo | Newbie

La vista la tengo salvata, invece devo scrivere questi record in un file di testo.
Io estraggo da Sql Server ed il db non può essere toccato e neanche ne posso creare altri.
In pratica questo è il mio percorso:
Estraggo dalla vista, devo fare la modifica dei campi e scrivere i record su file di testo.

alx_81 Profilo | Guru

>La vista la tengo salvata, invece devo scrivere questi record
>in un file di testo.
>Io estraggo da Sql Server ed il db non può essere toccato e neanche
>ne posso creare altri.
>In pratica questo è il mio percorso:
>Estraggo dalla vista, devo fare la modifica dei campi e scrivere
>i record su file di testo.
Ciao, è molto semplice, da come vedo dal titolo sei già sull'ambiente SSIS Visual Studio Business Intelligence Development Studio.
Nella parte di Control Flow (Flusso di controllo), trascina un Data Flow e fai su di esso doppio click.
Una volta nel Data Flow trascina una sorgente di tipo OLEDB e connettiti al sql andando a prendere la tua vista.
In uscita dal source OLEDB avrai delle colonne, per ridefinirle, puoi usare un DERIVED COLUMN (Colonna derivata).
Con quel task, trascini la colonna da "cambiare" nell'espressione e gli aggiungi un'espressione simile a questa:

(DT_STR, 7, 1252)RIGHT("00" + [TuaColonna], 7)

Assegna un nome a questa espressione e avrai in uscita dal derived una nuova colonna, che poi puoi tranquillamente passare alla tua flat file destination.
Questi sono step superficiali, se ti fermi, scrivi pure.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mcfede88 Profilo | Newbie

Grazie Mille funziona!!!
Adesso non riesco a fare due cose:
1-La prima è troncare un campo testo da 80 caratteri facendolo diventare di 40 caratteri.
2- Le colonne stampate su file sono tutte unite.

Grazie mille

alx_81 Profilo | Guru

>Grazie Mille funziona!!!
>Adesso non riesco a fare due cose:
>1-La prima è troncare un campo testo da 80 caratteri facendolo diventare di 40 caratteri.
puoi usare lo stesso derived column per altre espressioni, ad esempio usando la substring, basandoti sulle sintassi che ti ho dato nel post precedente.

>2- Le colonne stampate su file sono tutte unite.
dipende come hai creato il flat file, se non lo hai fatto delimitato e se non hai definito il delimitatore, fixed è l'output che ottieni.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mcfede88 Profilo | Newbie

L'espressione della substring è questa:
SUBSTRING(<<character_expression>>, <<start>>, <<lenght>>)

in start dovrei mettere 0 così prendi i caratteri dall'inizio e lenght 40, ma non ho capito cosa mettere in character_expression..

Grazie mille e scusa per il disturbo

alx_81 Profilo | Guru

>L'espressione della substring è questa:
>SUBSTRING(<<character_expression>>, <<start>>, <<lenght>>)
>in start dovrei mettere 0 così prendi i caratteri dall'inizio
>e lenght 40, ma non ho capito cosa mettere in character_expression..
prova a pensarci bene , se non indico COSA TAGLIARE, come fai? Ci vuole la stringa che devi tagliare.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mcfede88 Profilo | Newbie

dovrei tagliare tutti i caratteri dal 40 in poi contenuti nella colonna SIGLA.
Ma non so come scrivere questa sintassi...

alx_81 Profilo | Guru

>dovrei tagliare tutti i caratteri dal 40 in poi contenuti nella colonna SIGLA.
>Ma non so come scrivere questa sintassi...
Allora meglio left:
(DT_STR, 40, 1252)LEFT(SIGLA, 40)

Questa ricava i primi 40 caratteri a sinistra.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mcfede88 Profilo | Newbie

Con il LEFT mi da errore di sintassi, invece se metto RIGHT va bene.
Come mai?

mcfede88 Profilo | Newbie

Ho risolto in questo modo:
SUBSTRING([SIGLA]+" ",1,40)

Un'altra cosa che non sto capendo come si fa è se ho nello stesso campo numeri di 4 e numeri di 5 cifre come faccio ad indicare
se il numero è di 4 aggiungi 000 se il numero è di 5 aggiungi 00

Grazie mille
Federico

alx_81 Profilo | Guru

>Ho risolto in questo modo:
>SUBSTRING([SIGLA]+" ",1,40)
a prescindere dal fatto che la left e la right sono uguali come parametri, quindi non so dirti come mai hai errore di sintassi..

>Un'altra cosa che non sto capendo come si fa è se ho nello stesso
>campo numeri di 4 e numeri di 5 cifre come faccio ad indicare
>se il numero è di 4 aggiungi 000 se il numero è di 5 aggiungi 00
con la right, aggiungi sempre il numero massimo di "0" e poi tagli a destra della lunghezza desiderata.
Come ti ho indicato nel primo post.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mcfede88 Profilo | Newbie

Vorrei chiederti un'ultima cosa.
C'è modo per scrivere in un file di logo il numero di righe che vengono estratte dal db, il numero di righe che vengono scritte nel file flat ed il numero di righe "scartate"?

Grazie mille
Federico

alx_81 Profilo | Guru

>C'è modo per scrivere in un file di logo il numero di righe che
>vengono estratte dal db, il numero di righe che vengono scritte
>nel file flat ed il numero di righe "scartate"?
ti ho risposto qui
http://www.dotnethell.it/forum/messages.aspx?ThreadID=37586
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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