Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Modifica inserimento dati
martedì 27 ottobre 2009 - 11.02
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ventu
Profilo
| Newbie
39
messaggi | Data Invio:
mar 27 ott 2009 - 11:02
Ciao a tutti, tutti i giorni alle ore 12:00 un programma scritto in VB.net che feci quando ne capivo ancora meno di ora, legge un file testuale di circa 100 mega estratto da un gestionale interno.
Questo file viene esaminato da una logica .net e inserito i dati nel DB (SQL 2005 Express). (una cosa tipo: i primi 10 caratteri del primo rigo sono X, i secondi 20 sono Y, i terzi 40 sono Z e cosi via)
Tempo fà, decisi di fare in questo modo:
-Cancellare la tabella.
-Ricreare la tabella vuota.
-Reinserire i dati aggiornati.
Dato che la tabella è in sola lettura per tutti, non si son mai presentati particolari problemi.
Oggi che sono un po più esperto mi sono accorto che l'unico vero problema di questo giochetto è che non posso creare relazioni statiche, quindi non posso usare l'id della tabella come FK per altre tabelle.
Ricordo che tempo fà pensai di fare una query di inserimento con IF, anzi che cancellare la tabella tutte le volte, ma il problema mi si presentava, quando dal file sorgente, sparivano delle righe perchè cancellate sul gestionale, e quindi il mio DB le lasciava li.. La query era :
IF exist (select blablabla)
UPDATE
ELSE
INSERT
Una bella gatta da pelare... Secondo voi che strada potrei scegliere per evitare di droppare tutte le volte la tabella e ricrearla?
M.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 27 ott 2009 - 21:01
>Ciao a tutti,
ciao
>Ricordo che tempo fà pensai di fare una query di inserimento
>con IF, anzi che cancellare la tabella tutte le volte, ma il
>problema mi si presentava, quando dal file sorgente, sparivano
>delle righe perchè cancellate sul gestionale, e quindi il mio
>DB le lasciava li.. La query era :
>Una bella gatta da pelare... Secondo voi che strada potrei scegliere
>per evitare di droppare tutte le volte la tabella e ricrearla?
Ma l'inserimento incrementale che ottieni con la if exists è a mio avviso più che sufficiente.
Se il gestionale non ti passa più alcune righe ed esistono sulla tua tabella, cosa vorresti fare? cancellarle?
se sì, basta mettere un campo in più nella tabella contenente la data di modifica (univoca per processo che sta girando, non riga per riga, una sorta di data di riferimento).
Tutte quelle che hanno una data diversa alla fine del processo (e quindi che non sono state nè aggiornate nè inserite) le elimini.
--
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
Torna su
Stanze Forum
Elenco Threads
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 !