Ako previezť alebo skonvertovať Excel tabuľku na SQL dopyt

október 4, 2015

Určite ste sa už stretli s problémom, že ste mali Microsoft EXCEL tabuľku a bolo potrebné ju previesť do databázy. Pokiaľ má ta tabuľka pár riadkov a stĺpcov nie je problém ju rýchlo ponahadzovať cez nejaký GUI klient do databázy, ale čo ak má tabuľka 50000 riadkov a 50 stĺpcov ?

Na internete sa objavujú postupy ako export do CSV z excelu a následný import do databázy cez nejaký GUI nástroj (pre MySQL  PHPMyAdmin a pre Oracle napríklad SQL developer). A tento spôsob je jednoduchý, rýchly a je použiteľný vo váčšine prípadov. Čo ak je potrebné údaje nejako spracovať, napríklad v tabuľke sa adresa nachádza vo v jednom stĺpci a je potrebné ju do databázy vložiť do viacerých stĺpcov? Na toto nebude stačiť autoamtický nástroj.

Majme takúto tabuľku (prvý záznam je na EXCEL riadku číslo 2) :

customer_id first_name second_name address house_number
100 Peter Kadlec 5th Avanue 14
101 John Ballock Green lake 25/45
102 Abdul Habib
103 Tom Lurfurson Riverbound street 1050
104 Xiao Tung Peng Polgrad 5423/125

 

V princípe ide o konkatenáciu INSERT reťazca s premennými z buňiek a keďže reťazec tvoríme úplne sami, môžeme ho rôzne podmienkovať alebo inak spracovávať.

Pre našu testovaciu tabuľku by vyzeral SQL dopyt v podobe EXCEL funkcie napríklad takto (chceme spojiť stĺpec address a house_number do jedného):

=”INSERT INTO customers VALUES ( ‘” & A2 & “‘, ‘” & B2 & “‘, ‘” & C2 &”‘, ‘” & D2 &” ” & E2&   “‘);”

Po vykonaní funkcie bude výstup pre všetky riadky takýto (Je potrebné spustiť funkciu na každom riadku, pretože pracuj len s jedným riadkom):

INSERT INTO customers VALUES ( ‘100’, ‘Peter’, ‘Kadlec’, ‘5th Avanue 14’);
INSERT INTO customers VALUES ( ‘101’, ‘John’, ‘Ballock’, ‘Green lake 25/45’);
INSERT INTO customers VALUES ( ‘102’, ‘Abdul’, ‘Habib’, ‘ ‘);
INSERT INTO customers VALUES ( ‘103’, ‘Tom’, ‘Lurfurson’, ‘Riverbound street 1050’);
INSERT INTO customers VALUES ( ‘104’, ‘Xiao’, ‘Tung Peng’, ‘Polgrad 5423/125’);

 

Takto vygenerované insert je možné už vložiť do databázy.


No Comments

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *