Sto tentando di aggiornare un campo in una tabella con i dati di un'altra tabella, in base a una chiave comune. Se fosse in SQL dritto, sarebbe qualcosa di simile:Aggiornamento tabella utilizzando SSIS
Update EHSIT
set e.IDMSObjID = s.IDMSObjID
from EHSIT e, EHSIDMS s
where e.SITENUM = s.SITE_CODE
Tuttavia, le due tabelle non sono nello stesso database, quindi sto cercando di utilizzare SSIS per fare l'aggiornamento. Oh, e il sitenum/site_code sono varchar in uno e nvarchar nell'altro, quindi dovrò fare una conversione dei dati in modo che corrispondano.
Come faccio?
Ho un oggetto flusso di dati, con la sorgente come EHSIDMS e la destinazione come EHSIT. Ho una conversione dei dati per convertire l'unicode in non-unicode. Ma come posso aggiornare in base alla partita? Ho provato con la destinazione, utilizzando un comando SQL come modalità di accesso ai dati, ma non sembra avere la tabella di origine. Se mappo semplicemente il campo da aggiornare, come lo limita in base ai campi corrispondenti?
Sto per esportare la mia tabella di origine in Excel o qualcosa del genere, quindi provo a immettere da lì, anche se sembra che tutto ciò che mi porterebbe sarebbe rimuovere il passaggio di conversione dei dati.
Non dovrebbe esserci un'attività di aggiornamento dati o qualcosa del genere? E 'una di quelle attività di trasformazione del Flusso di dati, e non sto capendo quale sia?
Ok, funziona. Ho creato una tabella temporanea nel mio db di destinazione, ho copiato i dati in essa e poi ho usato l'istruzione di aggiornamento per ottenere il mio campo compilato. Elimina la tabella temporanea e ho finito. Grazie. – thursdaysgeek
Cerca sempre di usare una tabella di staging, prova a pensare in blocchi di dati. Se hai 1 milione di record che necessitano di essere aggiornati, è molto lento aggiornare ogni record con una dichiarazione di aggiornamento. Quindi dovresti usare 1 singola tabella e una dichiarazione per fare gli aggiornamenti. – JSC