Alle indlæg af Morten Hatting Voltelen

MySQL – Eksport og import via kommandopromt

phpMyAdmin hjælper med administration af mysqldatabaser. Det kan også importere og eksportere databaserne, men begynder de at blive for store, kan phpMyAdmin ikke håndtere det mere. Det kan man så bruge eksempelvis Windows’ kommandopromt til. Følgende er en guide til hvordan.

For at følgende kan fungere, skal man finde sin mysql fil, som hvis man bruger XAMPP ligger i (alt efter hvor xampp er installeret, men fx direkte på c drevet) c:/xampp/mysql/bin

For at havne i denne mappe skrives i kommandopromt (som åbnes ved at trykke window + r og skrive ”cmd” eller ved at finde den i startmenuen)

cd c:/xampp/mysql/bin

Herefter er man klar til nedenstående kommandoer.

I det følgende anvendessom noget der skal skiftes ud med relevant værdi, mens [tekst] er noget der kan udelades.

Eksport af eksisterende tabel/database/databaser

Kommandoen til eksport af mysql i komandopromt hedder mysqldump. Til den følger en masse mulige parametre. Indledningsvis drejer det sig om at oprette forbindelse til serveren.
Der skal angives et brugernavn, et password, og i nogle tilfælde også et servernavn. De angives på følgende vis:

  • Brugernavnet:
     –u
  • Password:
     -p

    (bemærk det manglende mellemrum mellem –p og  Det skal være der!) eller blot –p for at blive promtet.

  • Hvis man ønsker at ramme en anden server end den lokale, kan man (såfremt den tillader ekstern tilgang) skrive
     –h

Derefter skal man angive hvad man ønsker at eksportere. Man kan vælge mellem hele samlingen, en enkelt database, eller blot en enkelt tabel:

  • For at eksportere alle databaser i samlingen,  skrives
    –-all-databases
  • For at vælge flere databaser skrives
    ––databases   ...
  • For at vælge en database skrives blot
    
    
  • For at vælge en eller flere tabeller i en database skrives
      [ ..]

Til sidste skal man angive, hvor man ønsker at gemme det henne. Det gøres ved at tilføje:

> .sql

For at eksportere en enkelt database fra en ekstern server til en fil skal man altså skrive:

Mysqldump –u  [-p[]] [–h ]  > <sti/til/fil/filnavn>.sql

Se flere parametre på: http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

Import af eksporterede sqlfil

For at importere den dannede sql fil, bruges komandoen mysql.

For at bruge den, skal der også angives brugernavn, password og evt servernavn. Det gøres på samme måde, som ved eksport (se ovenfor).

Så for at få adgang til mysql panelet (MySQL monitor) skrives:

Mysql –u  [-p[]] [–h ]

Herefter kan standard mysql komandoer bruges (Alle komandoer bør afsluttes med ”;” ) Den vigtigeste i denne sammenhæng er kommandoen

source [<fil/sti/>].sql

Den bruges til at udføre koden fra en sql-fil. Alt efter indholdet af den udvalgte sql-fil, skal forskellige ting defineres inden brug. Hvis sql-filen indholder en eksport af alle/flere databaser, kan source blot udføres  lige efter man har fået adgang til mysql. Det kræver selvfølgeligt at man benytter en bruger med de nødvendige privillegier. Man skal samtidig passe på ved import af en hel samling databaser, da den vil overskrive eksisterende tabeller i databaser, hvis der er navnesammenfald.

Har man kun eksporteret fra en database, skal man selv oprette/vælge den database man ønsker at importere til. Inden man gør det kan komandoen

show databases;

være praktisk. Den viser de allerede eksisterende databaser (som man har adgang til).

Hvis den ønskede database ikke eksisterer, kan den oprettes ved at skrive:

create database ;

Hvis man vil være sikker på at man får en “ren” database, kan man slette den først, for derefter at oprette den igen, vha tidligere komando. Man sletter en database ved at skrive

drop database ;

Når man har fundet/oprettet den database man ønsker at bruge vælges den ved at skrive

use ;

Derefter kan source komandoen bruges, og tabellerne importeres ind i den valgte database.
Processen for en import af en database kunne se sådan ud:

shell>mysql -u  -p
show databases;
drop database ;
create database ;
use ;
source [path/to/sqlfile/].sql;