Ik heb een 4-tal tabellen in een Microsoft SQL server staan. Deze 4 tabellen dienen elke dag gecynchroniseerd te worden met een 14-tal CSV bestanden. De CSV bestanden staan op een externe server en deze download ik eerst naar mijn eigen server om ze daarna verder te verwerken.
Eerst open ik de 1e CSV en zorg dat ik deze eerst in een array stopt door de .csv in te lezen en met een Split op Chr(10) te doen. Nu krijg ik dus weer apparte regels welke ik dus d.m.v. een loop in de database wil toevoegen, of indien het id al bestaat, de gegevens updaten. Alvorens het in de database wordt gezet, worden er nog een aantal functies op losgelaten om het juiste 'formaat' te krijgen.
Hiervoor heb ik onderstaande script voor geschreven:
Heeft iemand misschien hier een goed idee voor om dit wat efficienter te maken?
Eerst open ik de 1e CSV en zorg dat ik deze eerst in een array stopt door de .csv in te lezen en met een Split op Chr(10) te doen. Nu krijg ik dus weer apparte regels welke ik dus d.m.v. een loop in de database wil toevoegen, of indien het id al bestaat, de gegevens updaten. Alvorens het in de database wordt gezet, worden er nog een aantal functies op losgelaten om het juiste 'formaat' te krijgen.
Hiervoor heb ik onderstaande script voor geschreven:
ASP:
Bovenstaande code gaat opzich goed, alleen heb ik zelf het idee dat het zoiezo erg lang duurt (op het moment 11839 record doet hij 138 seconde over), maar ik heb het idee dat er veel makkelijkere methoden voor zijn om dit op te lossen.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| splRegel = Split(SQLspl(x), ";") RTId = splRegel(0) Titel = QuoteWeg(Replace(splRegel(1), "'", "''")) Datum = DatumOmdraaien(QuoteWeg(splRegel(2))) Category = QuoteWeg(splRegel(3)) Ranking = QuoteWeg(splRegel(4)) Equivalent = QuoteWeg(splRegel(5)) LeesDB "SELECT * FROM Ringtone WHERE OrderNr = '" & RTId & "'" Records = RS.RecordCount LeesDBClose If Records = 0 Then WijzigDB "Ringtone" RS.AddNew Nieuw = Nieuw + 1 TotaalNieuw = TotaalNieuw + 1 Else WijzigDB "Ringtone WHERE OrderNr = '" & RTId & "'" End If RS.Fields("OrderNr") = RTId RS.Fields("Titel") = Titel RS.Fields("Datum") = Datum RS.Fields("Category") = Category RS.Fields("Ranking") = Ranking RS.Fields("Equivalent") = Equivalent RS.Update WijzigDBClose |
Heeft iemand misschien hier een goed idee voor om dit wat efficienter te maken?
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!