Gå til hovedinnhold

Hvordan får jeg lastet inn mye data/mange rader i MySQL?

Det finnes to måter å laste inn store mengder data på som omgår innlastingsbegrensningene. Disse har begge lav risiko for overbelastning:

1. Bulk/extended insert

MySQL og MariaDB støtter innsetting (insert) av data med flere rader (rows) per insert-kommando. Det gjøres eksempelvis slik:

insert into login (brukerid,ipadresse,tid) values (124,'192.168.1.9','2006-03-22 10:14:14), (125,'192.168.12.4','2006-03-22 10:19:21), (101,'192.168.97.24','2006-04-01 01:01:01);

Programmet mysqldump, som er installert på vår shell-server, lager slike bulk insert-optimerte filer.

2. Staggered upload

En teknikk som kalles "staggered insert/upload" består i at data lastes inn i etapper. Det finnes gratis script for å gjøre dette tilgjengelig på nettet, og et som er mye brukt er bigdump.php (ozerov.de). Pass på å passordbeskytte adgangen til bigdump.php.

For å unngå overbelastning må man gjøre noen endringer i bigdump.php ved å åpne filen i en teksteditor og endre følgende linjer:

$db_server   = 'mittnavn.mysql.domeneshop.no'; $db_name     = 'mittnavn'; $db_username = 'mittnavn'; $db_password = 'mittpassord';  $filename           = ''; $csv_insert_table   = '';  $csv_preempty_table = false;  $ajax               = true; $linespersession    = 800; // linjer per sesjon $delaypersession    = 100000; // millisekunder (1/1000 sek) pause

Bytt ut alle forekomster at mittnavn med ditt brukernavn og mittpassord med ditt databasepassord. Variablene $linespersession og $delaypersession er satt for å unngå at importeringen overstiger begrensningene for databasebruk. Selve databasefilen kan enten (1) lastes opp til samme mappe som bigdump.php eller (2) åpnes ved å starte scriptet i en nettleser. Husk at Javascript må være aktivert i forkant.

Bigdump.php

Vær oppmerksom på at dette kan ta lang tid, avhengig av hvor stor filen er. Importeringen er ferdig når meldingen Congratulations: End of file reached, assuming OK vises nederst på siden.

Svarte dette på spørsmålet?