MySQL are o caracteristică pentru a exporta un tabel în fișierul CSV. Un format de fișier CSV este o valoare separată prin virgulă pe care o folosim pentru a face schimb de date între diverse aplicații, cum ar fi Microsoft Excel , Goole Docs și Open Office. Este util să avem date MySQL în format de fișier CSV care ne permite să le analizăm și să le formatăm în modul dorit. Este un fișier text simplu care ne ajută să exportăm datele foarte ușor.
MySQL oferă o modalitate ușoară de a exporta orice tabel în fișiere CSV care se află în serverul de baze de date. Trebuie să ne asigurăm de următoarele lucruri înainte de a exporta datele MySQL:
- Procesul serverului MySQL are acces de citire/scriere la folderul specificat (țintă), care conține fișierul CSV.
- Fișierul CSV specificat nu ar trebui să existe în sistem.
Pentru a exporta tabelul într-un fișier CSV, vom folosi SELECTARE ÎN....FIȘIER afirmație. Această afirmație este un compliment al INCARCA DATE comanda, care este folosită pentru a scrie date dintr-un tabel și apoi a le exporta într-un format de fișier specificat pe serverul gazdă. Este pentru a ne asigura că avem un privilegiu de fișier pentru a folosi această sintaxă.
SELECT column_lists INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/filename.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY ' ';
De asemenea, putem folosi această sintaxă cu o declarație de valori pentru a exporta datele direct într-un fișier. Următoarea afirmație o explică mai clar:
SELECT * FROM (VALUES ROW(1,2,3,4),ROW(5,6),ROW(7,8)) AS table1 INTO OUTFILE '/tmp/selected_values.txt';
Dacă vrem să exportăm toate coloanele tabelului , vom folosi sintaxa de mai jos. Cu această declarație, ordinea și numărul de rânduri vor fi controlate de către COMANDA PENTRU și LIMITĂ clauză.
terminal kali linux
TABLE table_name ORDER BY lname LIMIT 1000 INTO OUTFILE '/path/filename.txt' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY ' ';;
De deasupra,
LINII TERMINATE DE „,” : este folosit pentru a indica liniile de rânduri dintr-un fișier care sunt terminate de un operator virgulă. Fiecare linie conține datele fiecărei coloane din fișier.
CÂMPURI ÎNCHISE DE „'' : Se utilizează pentru a specifica câmpul fișierului cuprins între ghilimele duble. Împiedică valorile care conțin separatori prin virgulă. Dacă valorile cuprinse între ghilimele duble sunt marcate, nu recunoaște virgula ca separator.
Locația de stocare a fișierului exportat
Locația de stocare a fiecărui fișier exportat în MySQL este stocată în variabila implicită secure_file_priv . Putem executa comanda de mai jos pentru a obține calea implicită a unui fișier exportat.
mysql> SHOW VARIABLES LIKE 'secure_file_priv';
După execuție, va da rezultatul după cum urmează, unde putem vedea această cale: C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ ca locație implicită a fișierului. Această cale va fi utilizată în momentul rulării unei comenzi de export.
Dacă dorim să schimbăm locația implicită de export a fișierului CSV specificat în fișierul secure_file_priv variabilă, trebuie să edităm my.ini Fișier de configurare. Pe platforma Windows, acest fișier se află pe această cale: C:ProgramDataMySQLMySQL Server X.Y .
găsiți în șirul c++
Dacă vrem să exportăm date MySQL, mai întâi trebuie să creăm un Bază de date cu cel putin unul masa . Vom folosi acest tabel ca exemplu.
Putem crea un baza de date si tabel executând codul de mai jos în editorii pe care îi folosim:
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');
Dacă executăm SELECTAȚI declarație, vom vedea următoarea ieșire:
Exportați datele MySQL în format CSV utilizând instrucțiunea SELECT INTO ... OUTFILE
Pentru a exporta datele tabelului într-un fișier CSV, trebuie să executăm interogarea după cum urmează:
aws redshift
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 ' ';
Vom obține următoarea ieșire, unde putem vedea că șase rânduri sunt afectate. Se datorează faptului că tabelul specificat conține doar șase rânduri.
Dacă executăm din nou aceeași instrucțiune, MySQL produce un mesaj de eroare care poate fi văzut în rezultatul de mai jos:
Mesajul de eroare ne spune că numele fișierului specificat există deja în locația specificată. Astfel, dacă exportăm noul fișier CSV cu același nume și locație, acesta nu poate fi creat. Putem rezolva acest lucru fie să ștergem fișierul existent în locația specificată, fie să redenumim numele fișierului pentru a-l crea în același loc.
Putem verifica fișierul CSV creat în locația specificată sau nu navigând la o cale dată, după cum urmează:
Când deschidem acest fișier, va arăta ca imaginea de mai jos:
În imagine, putem observa că câmpurile numerice sunt între ghilimele. Putem schimba acest stil adăugând OPTIONAL clauza înainte de ENCLOSED BY :
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 ' ';
Exportarea datelor cu antetul coloanei
Uneori dorim să exportăm date împreună cu titlurile coloanelor care fac fișierul convenabil. Fișierul exportat este mai ușor de înțeles dacă prima linie a fișierului CSV conține titlurile coloanelor. Putem adăuga titlurile coloanelor utilizând UNIREA TOȚI declarație după cum urmează:
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 ' ';
În această interogare, putem vedea că am adăugat titlu pentru fiecare nume de coloană. Putem verifica rezultatul navigând la adresa URL specificată unde prima linie conține titlul pentru fiecare coloană:
Exportați tabelul MySQL în format CSV
MySQL OUTFILE ne permite, de asemenea, să exportăm tabelul fără a specifica niciun nume de coloană. Putem folosi sintaxa de mai jos pentru a exporta tabelul într-un format de fișier CSV:
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 ' ';
Dacă executăm instrucțiunea de mai sus, instrumentul nostru de linie de comandă produce următorul rezultat. Înseamnă că tabelul specificat conține șase rânduri, care au fost exportate în employee_backup.csv fişier.
shehzad poonawala
Gestionarea valorilor nule
Uneori, câmpurile din setul de rezultate au valori NULL, apoi fișierul țintă (tip de fișier exportat) va conține N în loc de NULL. Putem rezolva această problemă prin înlocuirea valorii NULL cu „nu se aplică (N/A)” folosind IFNULL funcţie. Declarația de mai jos o explică mai clar:
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 ' ';
Exportați tabelul în format CSV utilizând MySQL Workbench
Dacă nu dorim să accesăm serverul de baze de date pentru exportul fișierului CSV, MySQL oferă o altă modalitate, adică folosind MySQL Workbench. Workbench este un instrument GUI pentru a lucra cu baza de date MySQL fără a utiliza un instrument de linie de comandă. Ne permite să exportăm setul de rezultate al unei instrucțiuni într-un format CSV în sistemul nostru local. Pentru a face acest lucru, trebuie să urmăm pașii de mai jos:
- Rulați instrucțiunea/interogarea și obțineți setul de rezultate.
- Apoi, în panoul de rezultate, faceți clic „exportați setul de înregistrări într-un fișier extern” opțiune. Setul de înregistrări este utilizat pentru setul de rezultate.
- În cele din urmă, va fi afișată o nouă casetă de dialog. Aici, trebuie să furnizăm un nume de fișier și formatul acestuia. După completarea detaliilor, faceți clic pe Salvați buton. Următoarea imagine explică mai clar:
Acum, putem verifica rezultatul navigând la calea specificată.