Metodo di Aggirnamento tabella db

sabato 14 luglio 2007 - 09.31

Giscotech Profilo | Junior Member

Salve a tutti.
Nel mio db ho una tabella articoli che aggiorno tramite un file di testo che proviene da un AS400.
La mia tabella ha molti più campi rispetto a quella originale e quindi non ho la possibilità di aggiornarla tramite istruzioni sql, veloci ed affidabili.
Per non perdere queste informazioni aggiuntive ho creato questa procedura di aggiornamento :

1) lettura stringa dal file txt
2) aggiornamento tabella db dopo aver individuato le informazioni per ogni campo.

Questo sistena potrebbe anche andar bene , ma risulta un pò lento anche perchè le righe del file sono per ora 27000!

Avevo pensato ad un'altra soluzione , che non ho provato e quindi non so se può risultare percorribile :

- creazione di 2 tabelle : 1 per i dati provenienti dall'AS400 e 1 tabella per i dati aggiuntivi collegata con una relazione 1 ad 1.

In questo modo in teoria potrei tramite istruzione sql cancellare i record della tabella 1 e appendere quelli del file di testo, conservando i dati aggiuntivi.

Potrebbe essere una strada percorribile?
Avete qualche altra idea da suggerirmi?

Grazie

Giuseppe Scordo
Giscotech Informatics

Cteniza Profilo | Guru

Credo che sia del tutto inutile caricare il file di testo in un dataset e poi aggiornare il database.
Io propenderei per generare un command con i relativi parametri.
Dim cn As New OleDbConnection(myconnectionstring)
Dim cm As new OleDbCommand("INSERT INTO mytable (campo, campo2, campo3) VALUES (?, ?, ?)",cn)
Dim prm As OleDbParameter
prm = new OleDbParame5ter
prm.ParameterName = "campo"
prm.Direction = ParameterDirection.Input
prm.DbType = DbType.String 'metti il tipo giusto
cm.parameters.add(prm)
... ripetuto per tutti i campi
cn.Open
poi leggi il file con StreamReader
Per ogni riga
assegni
cm.Parameters("nomecampo").value = valore del campo
... ripetuto per tutti i campi
cm.ExecuteNonQuery

Giscotech Profilo | Junior Member

Grazie per la risposta...
...ma io già faccio tutto questo (forse non mi sono spiegato bene).

Il problema è che siccome su ogni riga che leggo dal file di testo devo fare dei controlli , mi rallenta notevolmente tutto il processo.

Io volevo sapere se era possibile dividere la mia tabella in 2 parti :

1) una tabella per la parte che devo aggiornare dal file

2) una tabella per la parte che invece deve rimanere sempre fissa contenente le informazioni aggiunte da me e non presenti nel file di testo.

Le due tabelle unite da una relazione uno-a-uno.

Cmq penso non sia possibile perchè effettivamente se elimino tutti i record della tab.1 per metterci dentro tutti i record del file mi verrebbe restituito un'errore in quanto andrei ad intaccare l'integrità referenziale dei record.

Ma allora come faccio?

Giuseppe Scordo
Giscotech Informatics
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5