/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Bedste bud på at opdatere en webserver med~
Fra : Christian


Dato : 27-03-03 16:42

Jeg kunne godt tænke mig at høre bud på hvorledes man bør/kan
opdatere en database i følgende situation:
Situationen er den at der på webserveren (ikke hosted lokalt)
ligger en database (testDB). I denne ligger der en produkttabel
med (produkt_Id, Produktnavn, Beskrivelse, pris)
Opdateringen af denne tabel, skal ske på baggrund af en tekstfil
(C4)
produkter.txt (10;Opel Vectra;Bil;100000)

Spørgsmålet er så hvorledes laves den letteste og mest praktiske
opdatering af produkttabellen (indeholder ca. 4000 varer) ?

Foreslås MySQL eller en Access DB ?

Kan man på en smart måde lave en kørsel der gennemløber
tekstfilen linie for linie og opdaterer denne i testDB'en eller
er det for voldsomt med 4000 opdateringer via en ASPside ?

Desuden skal en record slettes i testDB'en, hvis et produkt_Id
ikke længere forekommer i produkter.txt (altså at en vare er
blevet slettet, og dermed ikke skal forekomme på webserveren
længere)

På forhånd tak !




--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
SUM (27-03-2003)
Kommentar
Fra : SUM


Dato : 27-03-03 21:35


"Christian" <bateman@surfmail.dk> skrev i en meddelelse
news:b5v63g$qob$1@sunsite.dk...
<snip>
Er der andre felter i basen testDB end dem du har i tekstfilen?
Det nemmeste er nok at hente basen hjem lokalt og opdatere den med et vb
script, hvorefter du uploader den igen.
Jeg opdaterer selv en base med 18.000 poster ugentligt, og det tager på den
måde ca. 5 min.
Samtidig betyder det, at basen ikke er"uarbejdsdygtigt" på nettet mens du
opdaterer.

Mvh Steen




Jesper Nielsen (28-03-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 28-03-03 08:23

> Det nemmeste er nok at hente basen hjem lokalt og opdatere den med et vb
> script, hvorefter du uploader den igen.
> Jeg opdaterer selv en base med 18.000 poster ugentligt, og det tager på
den
> måde ca. 5 min.

Jeg er helt enig - det ville være den bedste metode.
Jeg gennemløber hver nat en logfil fra min bannerserver på omkring 200 MB,
indsætter data i en midlertidig MSSQL tabel, gennemløber de midlertidige
data og laver beregninger. Det tager ca. 15 minutter.

Scriptet ser således ud. Måske spørgeren kan bruge det til noget?

' Print Start Time
Workdate = Now()
StartTime = Now()
WScript.Echo(" NielsenIT AdServer LogScanner")
WScript.Echo(" Scan start: " & StartTime)

' Create DB Connection
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=SQLOLEDB.1; SERVER=127.0.0.1; DATABASE=SSCE_AdReports;
UID=sa; PWD=**********; NETWORK=DBMSSOCN;"

' Truncate tempdata table
SQL = "TRUNCATE TABLE TempData;"
Conn.Execute(SQL)

' Determine LogDir and LogFile
LogDir = "c:\winnt\system32\logfiles\w3svc11\"

aDate = DateAdd("d",-1,Workdate)
MyYear = Right(Year(aDate),2)
MyMonth = Month(aDate)
MyDay = Day(aDate)

If Len(MyMonth) < 2 Then MyMonth = "0" & MyMonth
If Len(MyDay) < 2 Then MyDay = "0" & MyDay

LogFile = "ex" & MyYear & MyMonth & MyDay & ".log"

' Open Logfile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set f1 = FSO.OpenTextFile(LogDir & LogFile,1,False)

I = 0
' Read and parse logfile
Do While Not f1.AtEndOfStream 'And I < 5001
strParse = f1.ReadLine
If InStr(1,strParse,"Missing_URL") Then
ElseIf InStr(1,strParse,"adredir.asp") Then
On Error Resume Next
myString = ""
myString = Mid(strParse, InStr(1, strParse, "ciid=")+5, 16)
myString = Left(myString, InStr(1, myString, "&")-1)

If Err.number = 0 Then
SQL = "INSERT INTO TempData(CIID,Action) VALUES(" & myString & ",1);"
Conn.Execute(SQL)
End If
ElseIf InStr(1,strParse,"/siteserver-") Then
On Error Resume Next
myString = ""
myString = Mid(strParse, InStr(1, strParse, "ASIMPR=")+7, 16)
myString = Left(myString, InStr(1, myString, "&")-1)

If Err.number = 0 Then
SQL = "INSERT INTO TempData(CIID,Action) VALUES(" & myString & ",0);"
Conn.Execute(SQL)
End If
End If
I = I + 1
Loop

' Insert records to AdStats
aDate = DateAdd("d",-1,Workdate)
MyYear = Year(aDate)
MyMonth = Month(aDate)
MyDay = Day(aDate)

If Len(MyMonth) < 2 Then MyMonth = "0" & MyMonth
If Len(MyDay) < 2 Then MyDay = "0" & MyDay

MyDate = MyYear & "-" & MyMonth & "-" & MyDay

SQL = "SELECT * FROM Creatives;"
Set Qry = Conn.Execute(SQL)

If Qry.Eof = False Then
Do While Qry.Eof = False
SQL = "INSERT INTO AdStats(CreativeId,DateReport,AdViews,AdClicks) " & _
"VALUES(" & Qry("ID") & ",'" & MyDate & "',0,0);"
Conn.Execute(SQL)
Qry.MoveNext
Loop
End If

SQL = "SELECT * FROM AdStats WHERE DateReport = '" & MyDate & "';"
Set Qry = Conn.Execute(SQL)

If Qry.Eof = False Then
Do While Qry.Eof = False
' Count and Update Views
SQL = "SELECT COUNT(*) AS Cnt FROM TempData WHERE CIID = " &
Qry("CreativeId") & " AND Action = 0;"
Set aQry = Conn.Execute(SQL)

SQL = "UPDATE AdStats SET AdViews = " & aQry(0) & " WHERE CreativeId = "
& Qry("CreativeID") & " AND DateReport = '" & MyDate & "';"
Conn.Execute(SQL)

' Count and Update Clicks
SQL = "SELECT COUNT(*) AS Cnt FROM TempData WHERE CIID = " &
Qry("CreativeId") & " AND Action = 1;"
Set aQry = Conn.Execute(SQL)

SQL = "UPDATE AdStats SET AdClicks = " & CLng(aQry(0)) * 3 & " WHERE
CreativeId = " & Qry("CreativeID") & " AND DateReport = '" & MyDate & "';"
Conn.Execute(SQL)
Qry.MoveNext
Loop
End If


' Truncate tempdata table
SQL = "TRUNCATE TABLE TempData;"
Conn.Execute(SQL)

Conn.Close
Set Conn = Nothing

EndTime = Now()
WScript.Echo(" Scan end : " & EndTime)
WScript.Echo(" Scan time : " & DateDiff("s",StartTime,EndTime) & " sec.")
WScript.Echo(" Done!")



Jesper Stocholm (28-03-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 28-03-03 11:21

Jesper Nielsen wrote :

>> Det nemmeste er nok at hente basen hjem lokalt og opdatere den med et
>> vb script, hvorefter du uploader den igen.
>> Jeg opdaterer selv en base med 18.000 poster ugentligt, og det tager
>> på den måde ca. 5 min.
>
> Jeg er helt enig - det ville være den bedste metode.
> Jeg gennemløber hver nat en logfil fra min bannerserver på omkring 200
> MB, indsætter data i en midlertidig MSSQL tabel,

hvis spørgeren har adgang til MSSQL, så kan man med fordel bruge nogle af
de indbyggede import-værktøjer til at importere data, bearbejde dem og
returnere givne værdier. Jeg bruger selv dette, hvor en MSSQL2k (i
princippet) hver nat modtager en brugerdatafil fra en ekstern kilde,
importerer den og bearbejder den i forhold til de eksisterende data. Jeg
kunne forestille mig, at anvendelse af de indbyggede værktøjer vil betyde
forbedret performance i forhold til at lave et vb-script til det. Min
løsning kræver dog, at man har adgang til at bruge Enterprise Manager.



--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk: FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html: Skriv under det du svarer på
Svar venligt til gruppen og ikke til mig privat !

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste