Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Importa data stringa nella colonna Derivato

Risposta dettagliata, ma mi permetto di dissentire sul fatto che "SSIS non è in grado di riconoscere il formato della data fornito nella domanda".

Forse se fosse riformulato come "SSIS non può riconoscere il formato della data fornito senza aiuto". Il problema principale in questo caso è che per impostazione predefinita le routine di analisi di data e numero sono consapevole delle impostazioni locali . In generale, questa è una buona cosa, tranne quando non lo è. Mi sono imbattuto per la prima volta in questo quando avevo a che fare con le date in un formato di ccyymmdd proveniente da un mainframe. Come altri hanno indicato, analizzerà in tsql, perché non SSIS? Ci sono molti articoli là fuori che sostengono di affettare e tagliare i dati della stringa per trasformarli in un datetime valido, ma perché affrontare tutta questa seccatura?

Dato questo come dati di input di esempio (delimitati da tabulazioni).

LongDateDesiresFastParse    Gibberish
Oct 25 2011 10:18:10:756PM  Hello world
Oct 24 2010 10:18:10:756PM  Hello 2010 world
Oct 23 2009 10:18:10:756PM  Hello 2009 world
Oct 22 2008 10:18:10:756PM  Hello 2008 world

E un pacchetto simile a questo,

Modificando un'impostazione in Fonte file flat , posso far fallire o meno il pacchetto.

Fare clic con il pulsante destro del mouse sull'origine del file flat e selezionare "Mostra editor avanzato". Nella scheda "Proprietà di input e output", espandi le colonne di output e trova la colonna contenente la data. Modificare FastParse impostazione da False a True .

Quando l'ho eseguito, il pacchetto inizialmente non è riuscito perché stava perdendo precisione memorizzando quel valore in un DB_TIMESTAMP . Ho avuto successo quando ho impostato la colonna per digitare DB_TIMESTAMP2

Pacchetto demo disponibile su https://sites .google.com/site/billfellows/home/files/FastParse.dtsx?attredirects=0&d=1