Date con SSIS

martedì 20 maggio 2008 - 11.49

squilibrium Profilo | Junior Member

Ciao a tutti

ho creato un package con SSIS che semplicemente legge da un file di testo e inserisce su una tabella passando per un derivered task.

c'è un campo data che mi sta dando dei problemi. Ovvero quando non è presente nel file di testo, va in errore l'inserimento come se tentasse di inserire sulla tabella una stringa vuota invece di un valore null.

Come posso fare per inserire il valore null nel campo? Ho provato nel derivered column task ma senza risultato

Grazie

alx_81 Profilo | Guru

>Ciao a tutti
Ciao!
>
>ho creato un package con SSIS che semplicemente legge da un file
>di testo e inserisce su una tabella passando per un derivered
>task.
>c'è un campo data che mi sta dando dei problemi. Ovvero quando
>non è presente nel file di testo, va in errore l'inserimento
>come se tentasse di inserire sulla tabella una stringa vuota
>invece di un valore null.
>Come posso fare per inserire il valore null nel campo? Ho provato
>nel derivered column task ma senza risultato
Se dichiari il tipo delle colonne del tuo flat file in input non otterrai mai "stringhe vuote".
Prova a controllare nella collection delle colonne del tuo flat file adapter che i tipi siano corretti (vedi allegato).

718x566 24Kb

>
>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

squilibrium Profilo | Junior Member

Il fatto è che per evitare errori di dati sporchi, ho impostato il campo "dataX" sul flat file connection manager a stringa (DT_STR) per far si che venga sempre preso senza generarmi errore nel caso in cui vuoto o non formattato come data, poi nel derivered task vorrei fare il controllo sul campo e se è una data la inserisco così com'è altrimenti inserisco il valore null.

Ciao

alx_81 Profilo | Guru

>Il fatto è che per evitare errori di dati sporchi, ho impostato
>il campo "dataX" sul flat file connection manager a stringa (DT_STR)
>per far si che venga sempre preso senza generarmi errore nel
>caso in cui vuoto o non formattato come data, poi nel derivered
>task vorrei fare il controllo sul campo e se è una data la inserisco
>così com'è altrimenti inserisco il valore null.
Ok, in tal caso, definendo il campo stringa, devi utilizzare il derived column per controllare se la stringa è null o è vuota.
Ipotizziamo di leggere la colonna Data dal file. Nel derived io metterei questo:

ISNULL(Data) || Data == "" ? (DT_DBTIMESTAMP)"1900-01-01" : (DT_DBTIMESTAMP)Data

In questo modo dovresti poter gestire stringhe vuote e/o null. Il problema rimane per i dati sporchi. In quel caso ti consiglio l'utilizzo di uno script transformation task, per eseguire una trycast sulla data e nel caso in cui tu abbia errore, restituire null.
>
>Ciao
Ciao!
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

squilibrium Profilo | Junior Member

infatti ho usato un espressione simile a quella che mi hai postato. Il fatto è che se la stringa contenente la data è vuota, voglio inserire il valore NULL in tabella e non 1900-01-01. può sembrare inutile ma il fatto è che la tabella dopo viene esportata in un foglio excel da altre persone e si trovano male a leggere quella data invece di un campo vuoto.

alx_81 Profilo | Guru

>Il fatto è che se la stringa contenente la data è vuota, voglio
>inserire il valore NULL in tabella e non 1900-01-01. può sembrare
>inutile ma il fatto è che la tabella dopo viene esportata in
>un foglio excel da altre persone e si trovano male a leggere
>quella data invece di un campo vuoto.
allora basta cambiare di poco l'espressione
ISNULL(Data) || Data == "" ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)Data


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

squilibrium Profilo | Junior Member

OK

Non posso testarlo ora ma l'espressione almeno me la valida.

Grazie mille

Ciao
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5