logo

MySQL eksportavimo lentelė į CSV

MySQL turi funkciją eksportuoti lentelę į CSV failą. CSV failo formatas yra kableliais atskirta reikšmė, kurią naudojame keistis duomenimis tarp įvairių programų, pvz., Microsoft Excel , Goole Docs ir Open Office. Naudinga turėti MySQL duomenis CSV failo formatu, kuris leidžia analizuoti ir formatuoti juos taip, kaip norime. Tai paprasto teksto failas, padedantis labai lengvai eksportuoti duomenis.

MySQL suteikia paprastą būdą eksportuoti bet kurią lentelę į CSV failus, esančius duomenų bazės serveryje. Prieš eksportuodami MySQL duomenis, turime užtikrinti šiuos dalykus:

  • MySQL serverio procesas turi skaitymo / rašymo prieigą prie nurodyto (tikslinio) aplanko, kuriame yra CSV failas.
  • Nurodytas CSV failas sistemoje neturėtų egzistuoti.

Norėdami eksportuoti lentelę į CSV failą, naudosime PASIRINKTI Į....OUTFILE pareiškimas. Šis pareiškimas yra komplimentas Įkelti DUOMENYS komanda, kuri naudojama duomenims iš lentelės įrašyti ir eksportuoti į nurodytą failo formatą serverio priegloboje. Taip siekiama užtikrinti, kad turime failo privilegiją naudoti šią sintaksę.

 SELECT column_lists INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/filename.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY '
'; 

Taip pat galime naudoti šią sintaksę su verčių teiginiu, norėdami eksportuoti duomenis tiesiai į failą. Šis teiginys tai paaiškina aiškiau:

 SELECT * FROM (VALUES ROW(1,2,3,4),ROW(5,6),ROW(7,8)) AS table1 INTO OUTFILE '/tmp/selected_values.txt'; 

Jei norime eksportuoti visi lentelės stulpeliai , naudosime toliau pateiktą sintaksę. Su šiuo pareiškimu eilučių eiliškumą ir skaičių valdys RŪŠIUOTI PAGAL ir LIMIT sąlyga.

javascript skambinimo funkcija iš html
 TABLE table_name ORDER BY lname LIMIT 1000 INTO OUTFILE '/path/filename.txt' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
';; 

Iš to, kas išdėstyta aukščiau,

EILUTĖS, NUTRAUKIAMAS „,“ : naudojamas nurodyti failo eilučių eilutes, kurios baigiamos kablelio operatoriumi. Kiekvienoje eilutėje yra kiekvieno failo stulpelio duomenys.

LAUKAI, UŽDARYTI ''' : Naudojamas dvigubomis kabutėmis įterptam failo laukui nurodyti. Tai apsaugo nuo reikšmių, kuriose yra kablelių skyriklius. Jei reikšmės pateikiamos dvigubose kabutėse, ji neatpažįsta kablelio kaip skyriklio.

kas yra maven

Eksportuoto failo saugojimo vieta

Kiekvieno eksportuoto failo saugojimo vieta MySQL yra saugoma numatytajame kintamajame Secure_file_priv . Galime vykdyti toliau pateiktą komandą, kad gautume numatytąjį eksportuoto failo kelią.

 mysql> SHOW VARIABLES LIKE 'secure_file_priv'; 

Po vykdymo jis pateiks tokį rezultatą, kuriame pamatysime šį kelią: C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ kaip numatytąją failo vietą. Šis kelias bus naudojamas vykdant eksporto komandą.

MySQL eksportavimo lentelė į CSV

Jei norime pakeisti numatytąją CSV failo eksportavimo vietą, nurodytą Secure_file_priv kintamąjį, turime redaguoti mano.ini konfigūracijos failą. „Windows“ platformoje šis failas yra šiuo keliu: C:ProgramDataMySQLMySQL Server X.Y .

Jei norime eksportuoti MySQL duomenis, pirmiausia turime sukurti a duomenų bazėje su bent vienu stalo . Kaip pavyzdį naudosime šią lentelę.

Galime sukurti a duomenų bazė ir lentelė vykdydami toliau pateiktą kodą mūsų naudojamuose redaktoriuose:

 CREATE DATABASE testdb; USE testdb; CREATE TABLE employee_detail ( ID int NOT NULL AUTO_INCREMENT, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL, Phone varchar(15) DEFAULT NULL, City varchar(25) DEFAULT NULL, PRIMARY KEY (ID), UNIQUE KEY unique_email (Email), UNIQUE KEY index_name_phone (Name,Phone) ) INSERT INTO employee_detail ( Id, Name, Email, Phone, City) VALUES (1, 'Peter', '[email protected]', '49562959223', 'Texas'), (2, 'Suzi', '[email protected]', '70679834522', 'California'), (3, 'Joseph', '[email protected]', '09896765374', 'Alaska'), (4, 'Alex', '[email protected]', '97335737548', 'Los Angeles'), (5, 'Mark', '[email protected]', '78765645643', 'Washington'), (6, 'Stephen', '[email protected]', '986345793248', 'New York'); 

Jei vykdysime PASIRINKTI pareiškimą, pamatysime tokią išvestį:

MySQL eksportavimo lentelė į CSV

Eksportuokite MySQL duomenis CSV formatu naudodami teiginį SELECT INTO ... OUTFILE

Norėdami eksportuoti lentelės duomenis į CSV failą, turime vykdyti užklausą taip:

 SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

Gausime tokią išvestį, kurioje pamatysime, kad paveiktos šešios eilutės. Taip yra todėl, kad nurodytoje lentelėje yra tik šešios eilutės.

MySQL eksportavimo lentelė į CSV

Jei dar kartą vykdysime tą patį teiginį, MySQL pateikia klaidos pranešimą, kurį galima pamatyti toliau pateiktoje išvestyje:

MySQL eksportavimo lentelė į CSV

Klaidos pranešimas nurodo, kad nurodyto failo pavadinimas jau yra nurodytoje vietoje. Taigi, jei eksportuosime naują CSV failą tuo pačiu pavadinimu ir vieta, jo sukurti nepavyks. Tai galime išspręsti arba ištrinti esamą failą nurodytoje vietoje arba pervardyti failo pavadinimą, kad sukurtume jį toje pačioje vietoje.

Mes galime patikrinti CSV failą, sukurtą nurodytoje vietoje, ar ne, eidami į nurodytą kelią taip:

java yra lygi
MySQL eksportavimo lentelė į CSV

Kai atidarysime šį failą, jis atrodys taip, kaip toliau pateiktame paveikslėlyje:

MySQL eksportavimo lentelė į CSV

Paveikslėlyje matome, kad skaitiniai laukai yra kabutėse. Šį stilių galime pakeisti pridėdami PASIRENKAMA sąlyga prieš PRIDĖDAMAS :

 SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY '
'; 

Duomenų eksportavimas su stulpelio antrašte

Kartais norime eksportuoti duomenis kartu su stulpelių antraštėmis, kad failas būtų patogus. Eksportuotas failas yra labiau suprantamas, jei pirmoje CSV failo eilutėje yra stulpelių antraštės. Stulpelių antraštes galime pridėti naudodami SĄJUNGOS VISI pareiškimas taip:

 SELECT 'Id', 'Name', 'Email', 'Phone', 'City' UNION ALL SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ';' ENCLOSED BY ''' ESCAPED BY ''' LINES TERMINATED BY '
'; 

Šioje užklausoje matome, kad kiekvienam stulpelio pavadinimui pridėjome antraštę. Išvestį galime patikrinti eidami į nurodytą URL, kur pirmoje eilutėje yra kiekvieno stulpelio antraštė:

Linux redaguoti failą
MySQL eksportavimo lentelė į CSV

Eksportuokite MySQL lentelę CSV formatu

MySQL OUTFILE taip pat leidžia eksportuoti lentelę nenurodant jokio stulpelio pavadinimo. Norėdami eksportuoti lentelę CSV failo formatu, galime naudoti toliau pateiktą sintaksę:

 TABLE employee_detail ORDER BY City LIMIT 1000 INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

Jei vykdysime aukščiau pateiktą teiginį, mūsų komandų eilutės įrankis pateikia tokį rezultatą. Tai reiškia, kad nurodytoje lentelėje yra šešios eilutės, kurios buvo eksportuotos darbuotojas_atsarginė kopija.csv failą.

MySQL eksportavimo lentelė į CSV

Nulinių verčių tvarkymas

Kartais rezultatų rinkinio laukuose yra NULL reikšmės, tada tiksliniame faile (eksportuoto failo tipas) bus N vietoj NULL. Šią problemą galime išspręsti pakeisdami NULL reikšmę į „netaikoma (N/A)“ naudojant IFNULL funkcija. Toliau pateiktame teiginyje tai aiškiau paaiškinama:

 SELECT Name, Email, Phone, IFNULL(Phone, 'N/A') FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

Eksportuokite lentelę į CSV formatą naudodami „MySQL Workbench“.

Jei nenorime pasiekti duomenų bazės serverio, kad galėtume eksportuoti CSV failą, „MySQL“ siūlo kitą būdą, ty naudojant „MySQL Workbench“. Workbench yra GUI įrankis, skirtas dirbti su MySQL duomenų baze nenaudojant komandinės eilutės įrankio. Tai leidžia eksportuoti pareiškimo rezultatų rinkinį į CSV formatą mūsų vietinėje sistemoje. Norėdami tai padaryti, turime atlikti šiuos veiksmus:

  • Paleiskite teiginį / užklausą ir gaukite jo rezultatų rinkinį.
  • Tada rezultatų skydelyje spustelėkite „Eksportuoti įrašų rinkinį į išorinį failą“ variantas. Rezultatų rinkiniui naudojamas įrašų rinkinys.
  • Galiausiai bus rodomas naujas dialogo langas. Čia turime pateikti failo pavadinimą ir jo formatą. Užpildę išsamią informaciją, spustelėkite Sutaupyti mygtuką. Toliau pateiktame paveikslėlyje tai aiškiau paaiškinama:
MySQL eksportavimo lentelė į CSV

Dabar galime patikrinti rezultatą, eidami į nurodytą kelią.