dbsys.info

Import og eksport av CSV-data

Mange databaseverktøy, f.eks. phpMyAdmin, MySQL Workbench og Access har menyvalg for import og eksport av CSV-filer (blir ikke forklart her). Slike interaktive løsninger er enkle å bruke, men kan ha restriksjoner når det gjelder størrelse på datasettet.

For MySQL og MariaDB kan kommandolinjeverktøyet være et alternativ for import og eksport av større datasett. Eksemplene under er testet med MariaDB.

MariaDB: Kommandolinje Import Eksport

MySQL: Kommandolinje Import Eksport

Starte kommandolinjeverktøyet for MariaDB/MySQL

Hvordan man starter opp kommandolinjeverktøyet varierer litt med hvilket operativsystem man har, og hvordan man har installert MariaDB/MySQL.

Her er det forutsatt at MariaDB er installert som del av XAMPP, installert på mappe c:\xampp under Windows.

Først starter man DOS kommandolinjeverktøy og navigerer til undermappe \xampp\mysql\bin:


cd \xampp\mysql\bin

Hvis man har gjort en standard installasjon, uten å sette passord på root (som er lettvint for testing, men som man ikke bør gjøre for en database i produksjon), kan man logge på og gå til databasen testdb slik:


mysql --user=root testdb

Nå kan man skrive SQL-kommandoer, f.eks. SELECT. For å avslutte:


exit;

Skjermdumpen under viser et eksempel på en dialog, der vi ser at kommandoer skal avsluttes med semikolon og at kommandoen help viser en hjelpetekst.

Tips 1: Bruk piltastene (opp og ned) for å bla i "kommandohistorikken", det er nyttig hvis du vil gjenta en tidligere kommando.

Tips 2: Hvis man bruker kommandolinjeverktøyet ofte, bør man legge bin-mappen inn i PATH.

Eksport

Databasen Bilsalg til øvingsoppgavene i kapittel 3 inneholder følgende tabell med drøye 200 000 rader:

For å eksportere denne tabellen til en CSV-fil bilsalg.csv kan vi bruke SELECT ... INTO OUTFILE, slik:


SELECT Bilmerke, Bilmodell, KommuneNr, År, Måned, Antall
  INTO OUTFILE 'bilsalg.csv'
  FIELDS TERMINATED BY ';'
  ENCLOSED BY ''
  LINES TERMINATED BY '\n'
  FROM Bilsalg;

Vi bruker semikolon som skilletegn (FIELDS TERMINATED BY) og omslutter ikke tekstverdier av apostrofer eller lignende (ENCLOSED BY er satt til tom tekst). Hver rad er satt på en egen linje (LINES TERMINATED BY).

Import

For å importere den samme CSV-filen til tabellen Bilsalg (nå forutsetter vi at tabellen er tom), kan man bruke LOAD-kommandoen:


LOAD DATA INFILE 'bilsalg.csv'
INTO TABLE Bilsalg
CHARACTER SET 'utf8'
COLUMNS TERMINATED BY ';'
LINES TERMINATED BY '\n'
(Bilmerke, Bilmodell, KommuneNr, År, Måned, Antall);