Avatar billede axemaster Nybegynder
16. marts 2006 - 09:07 Der er 8 kommentarer

Indlæsning af MEGET STOR csv fil til MySQL

Jeg skal en gang om ugen indlæse en csv fil på ca. 6-7 mill. linier ind i en MySQL database. Timeout i ASP og på IIS server er sat til 100.000 sekunder. Den ender stadig med "siden kan ikke vises" efter laaangt tid og jeg kan se at den rigtige optælling er sket i databasen. MEN jeg er ikke sikker på at den har indlæst HELE filen. Hvordan kan jeg sikre mig det ???
Avatar billede erikjacobsen Ekspert
16. marts 2006 - 09:56 #1
Du skal lade være med at bruge ASP.  Brug klientprogrammer, der tilgår databasen direkte, fx http://www.mysqlfront.de/ og der er flere på mysql.com.  Har du ikke direkte adgang til databasen, skal du sørge for at få det - ellers har du bare uendeligt meget bøvl i fremtiden med de datamængder du snakker om her.
Avatar billede axemaster Nybegynder
16. marts 2006 - 12:57 #2
Problemet er at jeg skal opsummere bytes pr ip og så vidt jeg ved kan de forskellige databasefronter ikke klare det....derfor programmeringen (Har direkte adgang til MySQL databasen.)
Avatar billede ffsoft Praktikant
16. marts 2006 - 13:42 #3
Du skal have noget kode der:
Tæller linierne i csv filen
Henter csv filen i klumper på f. eks. 100.000

Bliver filen importeret til en tom tabel eller bliver data tilføjet ??
Ligger csv filen altid samme sted og har samme navn ??
Gør du manuelt ??
Ligger basen på Internet eller intranet??
Avatar billede erikjacobsen Ekspert
16. marts 2006 - 14:08 #4
Så synes jeg du skal skrive et Visual Basic program ved siden af, der sætter det ind i databasen. Man skal ikke (mis)bruge ASP til den slags.
Avatar billede mekawi Nybegynder
19. marts 2006 - 10:07 #5
Du kan sagtens bruge asp, ingen problemer. Det kræver bare lidt kreativ tankegang for at undgå timeouts. Du kunne skære filen over i flere mindre filer. Simpelthen læse hele filen og skrive nye filer med eks. 100.000 linier ned i en mappe ved siden af den originale fil. Herefter kan du kalde et script hver 3. minut der aflæser hvor mange filer du har i mappen, tager den første, smasker det ned i db'en, tæller bytes pr. ip og sletter filen efter sig.

Jeg har lavet en komplet shop-admin som håndterer utroligt mange pakkedata fra PostDanmark i asp - uden problemer. Hvis du skal lave noget i VB så skulle det være en lille applikation hvor du kan tilmelde dine Automated Scripts...
Avatar billede mini-me Nybegynder
19. marts 2006 - 10:13 #6
Få IE til at udskrive hver linie, så undgår du en timeout...


eks.


dit loop
adding til database
response.write output
response.flush()
loop
Avatar billede mekawi Nybegynder
19. marts 2006 - 10:32 #7
Jeg mener ikke du kan udskrive i HTML'en for at undgå timeout. Timeout'en (enten sat i IIS eller i scriptet) beskriver hvor lang tid serveren må være om at process'e et givent script. Problemet er jo ikke Browser timeout'en...

//Kim
www.mekavi.com
Avatar billede snowball Novice
19. marts 2006 - 12:23 #8
mekawi: Husk venligst, at det ikke er tilladt at skrive din hjemmeside som en del af din signatur :)

http://www.eksperten.dk/regler.phtml - punkt 2.1.6

Snowball / CoAdmin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester