Előfordulhat, hogy egy SQL adatbázist fel szeretnénk tölteni például egy .csv fájlban található adatokkal. Egyszerűnek tűnő dolog lehet ha van phpmyadmin a szerveren, de mint kiderült ez rettentően lassú és valamiért az adatbázis felénél nekem mindig megállt a folyamat.
Szerencsére a megoldás sem túl bonyolult.
1. Először is az adatbázis fájlt másoljuk a szerverre.
2. Lépjünk be a MySQL-be
mysql --user=xxxx --password=yyyy
3. Válasszuk ki az adatbázist
USE <adatbázisnév>
Kacsacsőr nem kell!
4. A következő parancssorral tudjuk importálni a fájlunkat:
LOAD DATA LOCAL INFILE '<fájlnév>' INTO TABLE <táblanév> FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (`<oszlop1>`,`<oszlop2>`,`<oszlop3>`,`<oszlop4>`,`<oszlop5>`);
Vigyázzunk a fájlnévnél és az elválasztó karaktereknél aposztróf van, de a sor végén az oszlopneveknél visszafele aposztróf!
Ebben a példában a kiválasztott fájl tartalmát importáljuk a <táblanév> táblába, az oszlopokat vessző választja el, és zárójelek között vannak, a sor végét az enter jelenti és az első sort nem olvassuk be (mert az a fejléc). Ráadásul a táblánkban több oszlop van, mint a fájlunkban, így megadtuk azokat az oszlopneveket, amikbe az adatoknak kerülnie kell.
Konfiguráció:
Fujitsu Siemens Amilo notebook - Debian 9 Stretch
SQL: MariaDB 10.4.17
Forrás:
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
https://stackoverflow.com/questions/6605765/importing-a-csv-into-mysql-via-command-line