2009-05-05 7 views
5

Utilizzo di SQL Server 2005 e Visual Studio 2005, Sto tentando di creare un pacchetto SSIS per unire dati da 1 tabella a diversi altri tavoli.Utilizzo di SSIS per mappare valori codificati rigidi come parte di una migrazione tabella uno-a-molti in Visual Studio

La tabella di origine non ha diversi campi che fanno le tabelle di destinazione. Ad esempio i campi "CreatedBy" e "CreatedDate". Mi piacerebbe che fossero codificati in modo rigido (in un certo senso) come parte del processo di importazione dei pacchetti.

Il problema non è sapere cosa usare per facilitare questa mappatura. Come punto di partenza sarebbe accettabile avere un hard coded '1' e GetDate() per createdBy e createdDate rispettivamente.

La scheda "Proprietà di input e output" o "Mappature colonne" nella finestra di dialogo delle opzioni "Editor avanzato per destinazione" non ha alcun supporto apparente per la mappatura di valori "predefiniti" come GetDate().

Qualche suggerimento su come ottenere ciò?

+0

Scrivo SQL per ottenere i dati dalle tabelle di origine. Nella mia fonte SQL, specifico tutte le colonne mancanti in modo che corrispondano. Non posso dire che sia il modo più efficiente per eseguire l'operazione, ma sembra funzionare per me. – JJO

risposta

8

Il modo SSIS per creare nuove colonne (con valori statici o meno) consiste nell'utilizzare la trasformazione "Colonna derivata" nel flusso di dati, tra l'origine e la destinazione.

Ciò consente di specificare colonne aggiuntive e i relativi valori utilizzando un'espressione. Per la data/ora corrente, utilizzare Getdate() come espressione e impostare il tipo di dati su "data (DT_DATE)". Per codificare un valore in modo rigido, inserirlo doppiamente nell'espressione (ad esempio "1") e specificare il tipo di dati pertinente.

+1

Grande, grazie ha funzionato un fascino. –

+2

Nota: le colonne non derivate passeranno direttamente attraverso il blocco di trasformazione "Colonna derivata", ad esempio dalla fonte alla destinazione. (SSIS in SQL Server 2008). – ryan

3

Piuttosto che utilizzare una tabella come origine, come specificare la query in modo specifico? In questo modo, puoi definire staticamente i valori come parte dell'origine.

ad es.

SELECT id, fieldOne, fieldTwo, '1' AS createdBy, GetDate() AS createdDate 
FROM SourceTable 

Ho fatto esattamente questa cosa di recente.

Una cosa importante da ricordare è che è necessario assicurarsi che i propri tipi di dati corrispondano. Ho avuto alcuni problemi con i tipi di dati stringa non corrispondenti (UTF-8 e simili).

+0

+1 per un buon suggerimento, ma funziona solo se si sta definendo una query come sorgente e la fonte è una fonte 'SQL'. Non puoi farlo se hai definito 'Tabella o Visualizza' come 'Modalità di accesso ai dati' in una sorgente OLE DB, ad esempio, anche se ovviamente potresti usare la tua tecnica se la fonte è una vista che sei in grado di modificare . Non puoi farlo per un file sorgente come FlatFile. – rohancragg

Problemi correlati