logo

MySQL Tablosunu CSV'ye Aktarma

MySQL'in bir tabloyu CSV dosyasına aktarma özelliği vardır. CSV dosya formatı, Microsoft Excel, Goole Docs ve Open Office gibi çeşitli uygulamalar arasında veri alışverişi yapmak için kullandığımız virgülle ayrılmış bir değerdir. MySQL verilerinin CSV dosya formatında olması, bunları istediğimiz şekilde analiz etmemize ve biçimlendirmemize olanak sağlar. Verileri çok kolay bir şekilde dışa aktarmamıza yardımcı olan düz metin dosyasıdır.

MySQL Herhangi bir tabloyu veritabanı sunucusunda bulunan CSV dosyalarına aktarmak için kolay bir yol sağlar. MySQL verilerini dışa aktarmadan önce aşağıdakileri sağlamalıyız:

  • MySQL sunucusunun işleminin, CSV dosyasını içeren belirtilen (hedef) klasöre okuma/yazma erişimi vardır.
  • Belirtilen CSV dosyası sistemde mevcut olmamalıdır.

Tabloyu bir CSV dosyasına aktarmak için şunu kullanacağız: SEÇİN İÇİNDE....OUTFILE ifade. Bu açıklama bir iltifattır VERİ YÜKLE Bir tablodan veri yazmak ve ardından onu sunucu ana bilgisayarında belirtilen bir dosya biçimine aktarmak için kullanılan komut. Bu sözdizimini kullanmak için bir dosya ayrıcalığına sahip olduğumuzdan emin olmak içindir.

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

Verileri doğrudan bir dosyaya aktarmak için bu sözdizimini bir değerler ifadesiyle de kullanabiliriz. Aşağıdaki ifade bunu daha açık bir şekilde açıklamaktadır:

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

İhracat yapmak istiyorsak tüm tablo sütunları , aşağıdaki sözdizimini kullanacağız. Bu ifadeyle satırların sırası ve sayısı kontrol edilecektir. TARAFINDAN SİPARİŞ Ve SINIR cümle.

unix dizin oluştur
 TABLE table_name ORDER BY lname LIMIT 1000 INTO OUTFILE '/path/filename.txt' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
';; 

Yukarıdan,

SATIRLAR ',' İLE SONLANDIRILDI : Bir dosyadaki satırların virgül operatörüyle sonlandırılan satırlarını belirtmek için kullanılır. Her satır, dosyadaki her sütunun verilerini içerir.

''' TARAFINDAN KAPLANAN ALANLAR : Dosyanın çift tırnak içine alınmış alanını belirtmek için kullanılır. Virgül ayırıcı içeren değerleri engeller. Çift tırnak içinde yer alan değerler varsa virgül ayırıcı olarak tanınmaz.

Dışa Aktarılan Dosyanın Depolama Konumu

MySQL'de dışa aktarılan her dosyanın depolama konumu varsayılan değişkende saklanır secure_file_priv . Dışa aktarılan bir dosyanın varsayılan yolunu almak için aşağıdaki komutu uygulayabiliriz.

 mysql> SHOW VARIABLES LIKE 'secure_file_priv'; 

Çalıştırdıktan sonra bu yolu görebileceğimiz şekilde sonucu verecektir: C:/ProgramData/MySQL/MySQL Server 8.0/Yüklemeler/ varsayılan dosya konumu olarak. Bu yol, dışa aktarma komutunun çalıştırılması sırasında kullanılacaktır.

MySQL Tablosunu CSV'ye Aktarma

Belirtilen CSV dosyasının varsayılan dışa aktarma konumunu değiştirmek istiyorsak secure_file_priv değişkeni düzenlememiz gerekiyor benim.ini yapılandırma dosyası. Windows platformunda bu dosya şu yolda bulunur: C:ProgramDataMySQLMySQL Sunucusu X.Y .

bfs ve dfs

MySQL verilerini dışa aktarmak istiyorsak önce bir oluşturmamız gerekir. veri tabanı en az biriyle masa . Örnek olarak bu tabloyu kullanacağız.

Bir tane oluşturabiliriz veritabanı ve tablo Kullandığımız editörlerde aşağıdaki kodu çalıştırarak:

 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'); 

Eğer şunu uygularsak SEÇME ifadesinde aşağıdaki çıktıyı göreceğiz:

MySQL Tablosunu CSV'ye Aktarma

SELECT INTO ... OUTFILE ifadesini kullanarak MySQL verilerini CSV formatında dışa aktarın

Tablo verilerini bir CSV dosyasına aktarmak için sorguyu aşağıdaki gibi yürütmemiz gerekir:

rdbm'ler
 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 '
'; 

Altı satırın etkilendiğini görebildiğimiz aşağıdaki çıktıyı alacağız. Bunun nedeni belirtilen tablonun yalnızca altı satır içermesidir.

MySQL Tablosunu CSV'ye Aktarma

Aynı ifadeyi tekrar çalıştırdığımızda MySQL aşağıdaki çıktıda görülebilecek bir hata mesajı üretir:

MySQL Tablosunu CSV'ye Aktarma

Hata mesajı bize belirtilen dosya adının belirtilen konumda zaten mevcut olduğunu bildirir. Dolayısıyla yeni CSV dosyasını aynı ad ve konumla dışa aktarırsak oluşturulamaz. Bu sorunu, belirtilen konumdaki mevcut dosyayı silerek veya aynı yerde oluşturmak için dosya adını yeniden adlandırarak çözebiliriz.

Belirli bir yola giderek, belirtilen konumda oluşturulan CSV dosyasını aşağıdaki gibi doğrulayabiliriz:

MySQL Tablosunu CSV'ye Aktarma

Bu dosyayı açtığımızda aşağıdaki görsele benzeyecek:

MySQL Tablosunu CSV'ye Aktarma

Resimde sayısal alanların tırnak içinde olduğunu görebiliyoruz. Bu stili ekleyerek değiştirebiliriz ENCLOSED BY'den önceki OPTIONALLY cümleciği :

 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 '
'; 

Verileri Sütun Başlığıyla Dışa Aktarma

Bazen dosyayı kullanışlı hale getiren sütun başlıklarıyla birlikte verileri de dışarı aktarmak isteriz. Dışa aktarılan dosya, CSV dosyasının ilk satırı sütun başlıklarını içeriyorsa daha anlaşılır olur. Sütun başlıklarını kullanarak ekleyebiliriz. BİRLİK TÜMÜ beyanı şu şekilde:

 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 '
'; 

Bu sorguda her sütun adına başlık eklediğimizi görüyoruz. İlk satırın her sütunun başlığını içerdiği belirtilen URL'ye giderek çıktıyı doğrulayabiliriz:

MySQL Tablosunu CSV'ye Aktarma

MySQL Tablosunu CSV Formatında Dışa Aktarma

MySQL OUTFILE ayrıca herhangi bir sütun adı belirtmeden tabloyu dışa aktarmamıza da olanak tanır. Tabloyu CSV dosya formatında dışa aktarmak için aşağıdaki sözdizimini kullanabiliriz:

 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 '
'; 

Yukarıdaki ifadeyi çalıştırırsak komut satırı aracımız aşağıdaki sonucu üretir. Bu, belirtilen tablonun şu şekilde dışa aktarılan altı satır içerdiği anlamına gelir: çalışan_backup.csv dosya.

java'daki oops kavramları
MySQL Tablosunu CSV'ye Aktarma

Boş Değerleri İşleme

Bazen sonuç kümesindeki alanların NULL değerleri olabilir, bu durumda hedef dosya (dışa aktarılan dosya türü) NULL yerine N içerir. NULL değerini şununla değiştirerek bu sorunu çözebiliriz: 'geçerli değil (Geçersiz)' kullanmak IFNULL işlev. Aşağıdaki ifade bunu daha açık bir şekilde açıklamaktadır:

 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 '
'; 

MySQL Workbench'i Kullanarak Tabloyu CSV Formatına Aktarma

CSV dosyasını dışa aktarmak için veritabanı sunucusuna erişmek istemiyorsak, MySQL başka bir yol sağlar, yani MySQL Workbench'i kullanır. Workbench, bir komut satırı aracı kullanmadan MySQL veritabanıyla çalışmak için kullanılan bir GUI aracıdır. Bir ifadenin sonuç kümesini yerel sistemimizde CSV formatına aktarmamıza olanak tanır. Bunu yapmak için aşağıdaki adımları izlememiz gerekir:

  • İfadeyi/sorguyu çalıştırın ve sonuç kümesini alın.
  • Daha sonra sonuç panelinde öğesine tıklayın. 'kayıt kümesini harici bir dosyaya aktar' seçenek. Sonuç kümesi için kayıt kümesi kullanılır.
  • Son olarak yeni bir iletişim kutusu görüntülenecektir. Burada bir dosya adı ve formatı vermemiz gerekiyor. Detayı doldurduktan sonra tıklayın Kaydetmek düğme. Aşağıdaki resim bunu daha net açıklıyor:
MySQL Tablosunu CSV'ye Aktarma

Artık belirtilen yola giderek sonucu doğrulayabiliriz.