[SQL SERVER 2005] - Importare dati su una tabella

giovedì 12 novembre 2009 - 10.58

symonx80 Profilo | Junior Member

Ho dubbi su come creare una query per portare un insieme di dati da una tabella ad un'altra con la stessa struttura, evitando che non si violi il vincolo di pk

Supponiamo di avere la tabella DESTINAZIONE e la tabella DATI, entrambe con questa struttura : ID,SEDE,INDIRIZZO,TEL
e come pk la coppia ID,SEDE,

Ho pensato ad una query del genere

INSERT INTO DESTINAZIONE
SELECT * FROM DATI
WHERE ID NOT IN(SELECT ID FROM DESTINAZIONE) AND
SEDE NOT IN(SELECT SEDE FROM DESTINAZIONE)
?
Sinceramente a me sembra scorretto perchè questo non implica che l'id e la sede siano sullo stesso record durante il controllo,o sbaglio?
Qualcuno ha buoni cosigli?

speedx Profilo | Junior Member

Ciao,
dunque... se la tabella non l'hai già ma le devi ancora creare, il modo + semplice è fare
SELECT *
INTO nome tabella destinazione
FROM tabella origine

Se la tabella l'hai già creata o cmq devi accodare i record devi utilizzare un altro sistema....
OK la INSERT INTO che hai scritto, ma devi disabilitare l'auto inserimento dell' ID al fine di preservare il precendente.

SET IDENTITY_INSERT to ON.
INSERT INTO.....
SET IDENTITY_INSERT to OFF.
da qui in poi la chiave ritorna ad essere autoincrement


//// Marcello C.

symonx80 Profilo | Junior Member

La tabella di destizione ha già dei dati al suo interno e la chiave non è autoincrementata.
Ma la query di inserimento è corretta a tuo parere?

speedx Profilo | Junior Member

Be allora la query va modificata...

INSERT INTO DESTINAZIONE
(
elenco campi tabella
)
SELECT
elenco campi da leggere
FROM DATI
LEFT OUTER JOIN DESTINAZIONE
ON DATI.ID = DESTINAZIONE.ID
AND DATI.SEDE = DESTINAZIONE.SEDE
WHERE
DESTINAZIONE.ID IS NULL
AND DESTINAZIONE.SEDE IS NULL

prova un po'

//// Marcello C.
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