MySQL veritabanını boşaltıyoruz ve verileri konsola aktarıyoruz. Büyük MySQL veritabanları nasıl dışa aktarılır (indirilir) ve içe aktarılır (yüklenir)? SSH Kullanarak MySQL Veritabanını İçe Aktarma

Bir siteyi buradan taşırken Yerel sunucu barındırma için zorunlu prosedürlerden biri veritabanının (veritabanı) dışa/içe aktarılmasıdır. Bu nedenle, bu makalede, bir veritabanını yerel bir sunucudan, yani web arayüzünden dışa ve içe aktarma sürecini mümkün olduğunca ayrıntılı olarak anlatmaya çalışacağım. PHPMyAdmin Barındırma için sürüm 3.2.3.

Yapılacak ilk şey yerel bir sunucu başlatmaktır, bu durumda Denwer. Denwer'ı başlattıktan sonra tarayıcınızı açmanız ve tarayıcı satırına "http://localhost/tools/phpmyadmin" girmeniz gerekir, ardından önünüzde bir pencere açılacaktır.(Şekil 1)önceden oluşturulmuş olan veritabanları.

Şekil 1

Daha sonra dışa aktaracağımız veritabanını seçmemiz gerekiyor, benim durumumda bu Mybd adında bir veritabanıdır. Tarayıcı penceresinin sol tarafında yazan yere tıklayarak bir veritabanı seçebilirsiniz. “Lütfen bir veritabanı seçin” (Şekil 2).


İncir. 2

İstenilen veritabanını seçtikten sonra veritabanı yapısını içeren bir pencere açılacaktır. Üst menüde bir öğe var "İhracat" bunun yardımıyla veritabanını bir bilgisayara aktaracağız ve ardından barındırma birimine aktaracağız. Ve böylece “Dışa Aktar” öğesine gidin (Şek. 3).


Şek. 3

Açılan pencerede bazı ölçümler yapmanız gerekiyor (Şek.4), yani: “Dışa Aktar” bloğunda, öğeye tıklayarak tüm veritabanı tablolarını seçmeniz gerekir. "Hepsini seç" ve öğenin yanındaki kutuyu işaretleyin SQL, bu öğe dışa aktarılacak dosyanın türünden sorumludur. Ayrıca yanındaki kutuyu işaretlemeniz gerekir. "Dosya olarak kaydet" Bu, veritabanının bir dosyaya kaydedilmesini sağlayacaktır. Başka herhangi bir ayarı değiştirmenize gerek yoktur, sadece düğmeye basmanız yeterlidir "Gitmek".

Şekil 4

Şimdi her şeyi doğru yaptıysanız veritabanı dosyasının bilgisayarınıza indirilmesi gerekir. Bu dosyayı kullanarak veritabanını hostinge aktaracağız.

Ayrıca, dosya kodlamasını BOM olmadan UTF-8 olarak değiştirmeniz gerekiyor, kodlamayı değiştirmek için bir metin düzenleyici kullanıyorum Not Defteri++(İndirmek ) . Bu programı kullanarak veritabanı dosyasını açarsınız ve menüde "Kodlama" seçmek “BOM olmadan UTF-8'e dönüştür” (Şekil 5), ardından kaydedip kapatın.


Şekil 5

Bu makalede iki soruyu ele alacağız: veritabanlarını nasıl içe aktarabilirsiniz ve php.ini'deki ayarları değiştirerek büyük veritabanlarını içe aktarma sorununu nasıl çözebilirsiniz.

Bildiğiniz gibi veri yedekleme, herhangi bir nedenle sitenin çalışmasının aniden kesintiye uğraması durumunda web sitenizi geri yükleyebileceğinizin garantisidir. Bir web sitesini yedekten nasıl geri yükleyebilirim? Birkaç yol var; bir mysql veritabanını phpMyAdmin'e nasıl aktarabileceğinize bakacağız. Veritabanı içe aktarma işlemine başlamadan önce, dosyaları içe aktaracağınız veritabanındaki tüm tabloları silmeniz gerekir.

Tabloları silmek için oturum açın ana sayfa phpMyAdmin'e gidin ve aşağıdakileri yapın:


2 - Tümünü işaretle'ye tıklayın;
3 - Açılır menüden Sil'i seçin ve Tamam'a tıklayın,

Artık MySQL veritabanını içe aktarmaya başlayabilirsiniz. Bunu yapmak için şu adımları izleyin:

1 - istediğiniz veritabanını seçin;
2 - üst menüdeki İçe Aktarma sekmesini açın;
3 - Gözat aracılığıyla bulun yedek kopya veritabanını seçin ve Tamam'a tıklayın.

Her şeyi doğru yaptıysanız phpMyAdmin penceresinde içe aktarmanın başarılı olduğunu belirten bir mesaj görünecektir.

Büyük MySQL veritabanlarını içe aktarma

Web yöneticileri sıklıkla büyük MySQL veritabanlarını içe aktarma sorunuyla karşılaşır. Sorun, PHPMyAdmin'de bir veritabanı dökümü indirmenin, varsayılan olarak 2 MB'ı (2.048 KB) aşmaması gereken, yüklenen dosyanın boyutuyla sınırlı olmasından kaynaklanmaktadır. Büyük bir veritabanının dökümünü indirmeye çalışırken bir hata mesajı görünüyor: "İndirilen dosya boyutu muhtemelen çok büyük..." vb.

Büyük bir veritabanının dökümünü içe aktarmanın bir yoluna bakalım. İçe aktarma dosyası boyutu sınırı PHP yapılandırmasına göre belirlenir. PHP yapılandırma ayarları php.ini dosyasında belirtilmiştir. Bu, büyük veritabanlarını içe aktarmak için php.ini yapılandırma dosyasına yüklenen dosyaların maksimum boyutunu değiştirmemiz gerektiği anlamına gelir.

Php.ini dosyası nerede bulunur? Php.ini dosyasının yolunu aşağıdaki gibi hesaplayabilirsiniz:

  • Bir info.php dosyası oluşturun ve içine aşağıdaki kodu yerleştirin;
  • Pop'ları yükle bu dosya sitenin kök klasörüne (www, public_html);
  • Tarayıcınızın adres çubuğuna http://siteniz/info.php adresini girin;
  • Açılan pencerede, dosya yolunun gösterileceği Yüklü Yapılandırma Dosyasını bulun;

Büyük bir mysql veritabanını içe aktarmak için PHPMyAdmin'deki php.ini yönergelerini değiştirmeniz gerekir.

Php.ini dosyası bulundu, şimdi geriye kalan tek şey onu düzenlemek veya daha doğrusu aşağıda gösterildiği gibi dosyadaki birkaç yönergeyi değiştirmek:

Komut dosyasının tamamen yüklenmesi için maksimum süre (sn):
max_execution_time = 60
Komut dosyasının tüm verileri alması için belirtilen maksimum süre (saniye):
max_input_time = 90
Komut dosyasının kullanmasına izin verilen maksimum bellek miktarı:
hafıza_sınırı = 128M
Yüklenen dosyaların izin verilen maksimum boyutu:
upload_max_filesize = 200 milyon
PHP'nin kabul edeceği maksimum aktarılan veri boyutu:
post_max_size = 180M

Php.ini'de yukarıdaki direktifleri değiştirerek PHPMyAdmin aracılığıyla 180 M'ye kadar veritabanlarını içe aktarabildik.

Bir veritabanı dökümünü içe aktarmak için şunları da kullanabilirsiniz: ücretsiz sürüm Sypex Damper programları. Damper, maksimum çalışma hızının yanı sıra yaklaşık 800 megabaytlık veritabanlarıyla çalışacak şekilde optimize edilmiştir.

Bana sık sık büyük bir MySQL veritabanının bir sunucuya nasıl aktarılacağı soruluyor. PhpMyAdmin'in varsayılan olarak içe aktarılan veritabanının boyutunda kısıtlamalara sahip olduğu bilinmektedir.

Dökümünüz kabul edilebilir sınırdan çok daha büyük değilse, onu birkaç parçaya bölebilir ve birkaç geçişte içe aktarabilirsiniz. Bu, örneğin sınırın 2 MB olması ve veritabanınızın boyutunun 5-10 MB olması durumunda haklıdır. 100 MB'lık bir veritabanını 50 parçaya "kesmenin" oldukça emek yoğun ve zaman alıcı bir süreç olduğu açıktır.

Bu sorunu çözmek için birkaç seçenek vardır.

Web sunucusu yapılandırmasını düzenleme

VDS/VPS'de bununla ilgili özel bir sorun yoktur, yalnızca yapılandırmayı düzeltmeniz gerekir. Yani php.ini'de sunucuya yüklenen dosyalar için izin verilen maksimum değerleri, POST yöntemi kullanılarak aktarılan dosyalar için maksimum boyutu artırın:

Post_max_size = 2000M upload_max_filesize = 2000M

Ayrıca veritabanınız çok büyükse izin verilen maksimum komut dosyası yürütme süresini artırmalısınız.

Max_execution_time = 32000 max_input_time = 32000

Ve her ihtimale karşı, izin verilen RAM miktarının boyutunu artırabilirsiniz:

Bellek_sınırı = 512M

Değişiklikleri yaptıktan sonra web sunucusunu yeniden başlattığınızdan emin olun.

Bu yöntemin sanal barındırma için uygun olmadığı açıktır çünkü... yapılandırmaları düzenleme yeteneği anlamına gelmez.

Sypex Damperli Kamyon

Üçüncü taraf yazılımları kullanabilirsiniz. Ve dikkat etmeye değer ilk uygulama Sypex Dumper'dır.

Yıllar önce ilk kez kullandığım ve tüm yeteneklerini ve avantajlarını takdir ettiğim için onu rahatlıkla "Mutlaka Sahip Olunması Gerekenler" olarak etiketleyebilirim. Sypex Dumper, kurulum gerektirmeyen bir PHP sunucu uygulamasıdır. Örneğin, sxd dizinindeki sitenizin köküne kopyalamanız ve tarayıcıda çağırmanız yeterlidir: http://Siteniz/sxd/. Öncelikle veritabanınızın bir dökümünü yedekleme dizinine yerleştirmeniz gerektiğini belirtmekte fayda var. Scripti başlattıktan sonra veritabanına bağlanmak için yetkilendirme panelini göreceksiniz. Kullanıcı adınızı ve şifrenizi girin. Ana bilgisayar ve bağlantı noktası yalnızca belirli olmaları durumunda isteğe bağlıdır.

Yetkilendirmeden sonra doğrudan veritabanını içe aktarma işlemine geçebilirsiniz. Tarlada "Veri tabanı" bağlandığınız veritabanı seçilecek ve alanda "Dosya" Daha önce Yedekleme dizinine yüklediğiniz dökümü göreceksiniz.

Çoğu durumda hiçbiri ek ayarlar artık gerekli değildir ve “Çalıştır” düğmesine tıklayarak içe aktarmayı güvenli bir şekilde başlatabilirsiniz. Veritabanının boyutuna ve İnternet bağlantı hızınıza bağlı olarak içe aktarma işlemi biraz zaman alabilir. İçe aktarma sırasında hangi tabloların içe aktarıldığını görebilirsiniz. şu an veritabanına. Komut dosyası tamamlandığında yürütme günlüğünü göreceksiniz. Şunun gibi bir şeye benziyor:

Aslında hepsi bu; veritabanı içe aktarılıyor!

Konsol

Konsol aracılığıyla içe aktarmayı düşünmeyeceğiz. Konsolu bensiz kullanan kişilerin herhangi bir veritabanının nasıl içe aktarılacağını bildiğini düşünüyorum. Ancak özel eğitimi olmayan sıradan kullanıcıların oraya gitmemesi daha iyidir. Çünkü bazı komutların yürütülmesi, sunucunun tamamen çökmesi de dahil olmak üzere ciddi sonuçlara yol açabilir.

Nihayet

Sydex Dumper'ın tek ve doğru çözüm olduğunu söyleyeceğimi sanmıyorum. Kullanıcının belirli bir bilgiye sahip olmasını ve sunucu ayarlarına uygun erişime sahip olmasını gerektiren daha zarif yöntemler de vardır.

Ancak paylaşımlı bir barındırma ortamında Sydex Dumper kesinlikle vazgeçilmez yardımcınız olacaktır.

Telgrafıma abone olun ve sitede bulunmayanlar da dahil olmak üzere yeni materyalleri ilk alan siz olun.

Selamlar arkadaşlar! 🙂

Bugün konsolda MySQL ile çalışma konusundaki konuşmaya devam etmeye ve MySQL veritabanını dışa aktarma prosedürüne dikkat etmeye karar verdim.

Bu yazıda MySQL veritabanının nasıl döküleceğinden ve MySQL'den Excel dosyasına ve csv formatına veri yüklemenin nasıl yapılacağından bahsedeceğim.

Bilgi almak için çeşitli seçeneklere bakacağız: bir veya daha fazla veritabanının dökümünü oluşturmak, verileri tek tek tablolardan ve rastgele sonuçlardan dışarı aktarmak SEÇME istekler.

Ayrıca sunucu konsolunda ve MySQL komut satırında MySQL veritabanından veri çıkışının nasıl alınacağı hakkında da konuşacağız.

Bu yazımda phpMyAdmin ve diğer görsel araçları kullanarak veri aktarımının nasıl yapılacağından bahsetmeyeceğim.

Birincisi, internette bu konuyla ilgili zaten yeterli materyal olduğu için. Üstelik kopyalayıp yapıştırmaya pek hevesli olmadığım yüksek kaliteli bir malzeme.

İkinci olarak, hakkında konuştuğum makalelerimden birinde MySQL veritabanından bir SQL dosyasına bilgi çıktısı alma sürecini kendim kısaca inceledim.

Yani profesyonel bir geliştirici değilseniz veya sistem yöneticisi Konsolla çalışmayla ilgili bilgileri yararlı bulabilecek kişiler için ve yalnızca veritabanının phpMyAdmin'e nasıl aktarılacağına ilişkin talimatlar için geldiyseniz, kendinizi yukarıdaki bağlantıdaki bilgileri okumakla sınırlayabilirsiniz.

Beni doğru anlamanızı istiyorum: Sizi hiçbir şekilde gücendirmek istemiyorum, sadece zamanınızı işinize maksimum fayda sağlayacak şekilde geçirmenizi ve aradığınızı almanızı istiyorum.

Bu, giriş bölümünü sonlandırıyor ve MySQL veritabanı dökümü oluşturmaya yönelik konsol komutlarının incelemesine geçiyoruz; bunu, kaydedilen veri miktarına göre sıralamaya karar verdim: tüm veritabanını dışa aktarmaktan başlayarak, tek tek tablolarla ve sonuçlarıyla biten keyfi sorgular.

Konsol aracılığıyla MySQL veritabanı dökümü oluşturma

Başlangıçta küçük bir açıklama yapmak istiyorum.

Veritabanı dökümü başlatıldığında veritabanları ve tablolar oluşturmanıza ve bunları bilgilerle doldurmanıza olanak tanıyan bir dizi SQL komutu içeren bir dosyadır. Döküm, MySQL veritabanını başka bir sunucuya veya mevcut bir sunucuya kopyalamak amacıyla indirmek isteyenler için gereklidir.

Ayrıca, eğer kimse bilmiyorsa, bir MySQL veritabanının yedeği, esasen, belirli bir süre içinde yapılan bir dökümüdür; bu, gerektiğinde veritabanının yapısını ve verilerini geri yüklemenize olanak tanır.

Verileri dışa aktar basitçe metin formundaki tablolardan bilgi çıkarmaktır daha fazla çalışma metin veya grafik editörleriyle.

Bu nedenle bu eylemlere ilişkin komutlar biraz farklı olacaktır.

Bir veritabanı dökümü oluşturmak için MySQL'in yerleşik bir yardımcı programı vardır. mysqldump Sunucu konsolunda veya başka bir kabukta MySQL komut satırının dışında kullanılması gereken.

Bu nedenle, en basit ve en yaygın seçenek için - MySQL konsolundaki belirli bir veritabanından verileri başka bir sunucuya aktarmak veya dahili kopyalamaya aktarmak için aşağıdaki komutu çalıştırmanız gerekir:

Mysqldump -u kullanıcı adı -p veritabanı_adı > yol_ve_dump_dosya_adı

Bu yardımcı program, MySQL veritabanı dökümlerini yalnızca SQL komutları içeren dosyalar biçiminde oluşturabilir; dolayısıyla dosyanız için hangi uzantıyı seçerseniz seçin, içeriği her durumda aynı olacaktır. Dosyanın oluşturulabilmesi için MySQL'den bilgi aktarmadan önce, bulunacağı dizinin yazma izinlerini kontrol etmeyi unutmayın.

Aniden sunucudaki tüm veritabanlarının dökümünü almanız gerekirse, aşağıdaki komut seçeneğini kullanın:

Mysqldump -u kullanıcı adı -p --all-databases > yol_ve_dump_dosya_adı

Yalnızca birkaç belirli veritabanının dökümünü almak için mysqldump'ı aşağıdaki parametrelerle çağırmanız gerekir:

Mysqldump -u kullanıcı adı -p --databases veritabanı_adı1, veritabanı_adı2, ... > yol_ve_dökümdosyası_adı

Sonuç olarak, her durumda, içerilen tabloların (alanlar, türleri, dizinler, anahtarlar vb.) yapısını oluşturmaya yönelik komutların yanı sıra bunları verilerle doldurmaya yönelik işlemleri içeren bir MySQL veritabanı dökümü alacaksınız.

Bu seçenek yalnızca veritabanlarının tamamını geri yüklemek ve kopyalamak için uygundur.

Belirli MySQL tablolarının yedeklerinin nasıl alınacağı ve verilerinin okunabilir biçimde nasıl elde edileceği hakkında daha ayrıntılı olarak konuşacağız.

MySQL tablosunu boşaltma ve verileri dışa aktarma

Belirli MySQL veritabanı tablolarının bir dökümünü oluşturmak için aynı yardımcı programa ihtiyacımız olacak mysqldump, aşağıdaki parametrelerle çağrılır:

Mysqldump -u kullanıcı adı -p veritabanı_adı tablo_adı1, tablo_adı2, ... > yol_ve_dökümdosyası_adı

Mysqldump'ı çağırırken gerekli tabloları parametre değeri olarak belirtebilirsiniz. --tablolar, parametre kullanıldığında --veritabanları göz ardı edilecek:

Mysqldump -u kullanıcı adı -p --databases veritabanı_adı1, veritabanı_adı2 --tablolar tablo_adı1, tablo_adı2, ... > yol_ve_dökümdosya_adı

Yukarıdaki örnek aşağıdaki hatayı gösterecektir:

Mysqldump: Hata oluştu: 1049: Veritabanını seçerken bilinmeyen veritabanı "database_name1"

Gördüğünüz gibi yalnızca listedeki en güncel veritabanı kullanılacaktır. Prensip olarak bu davranış oldukça mantıklı çünkü Belirtilen tablolar tüm veritabanlarında görünmeyebilir.

Tamam, MySQL veritabanı tablolarının bir dökümünü aldık. Bunları geri yüklemek veya yapıyla birlikte kopyalamak için kullanılabilir.

Peki ya içlerinde depolanan bilgileri yöneticiye gönderebilmeniz ve normal bir metin veya elektronik tablo düzenleyicide görüntüleyebilmeniz için tercihen okunabilir bir biçimde almanız gerekiyorsa ne olur? MySQL'in bunun için de araçları var.

Yardımcı programı arama seçeneği planlarımıza ulaşmamıza yardımcı olacak MySQL belirli parametrelerle konsoldan:

Mysql -u kullanıcı adı -p veritabanı_adı -e "tablo_adı'ndan SEÇ *"

Bu komut, gerekli veritabanına bir istek yürütmemize ve sonucu konsola girmeden konsolda görüntülememize olanak tanır. Komut satırı MySQL.

Verileri konsola çıkarmak değil, bir dosyaya yazmak için komutu aşağıdaki şekilde tamamlamanız gerekir:

Mysql -u kullanıcı adı -p -e "tablo adından SEÇ *" > yol_ve_dosya adı

Bu yapılar sayesinde tablonun sadece tüm alanlarında değil, belirli alanlarında da saklanan verileri elde edebiliyoruz. Bunu yapmak için joker karakter (*) sembolünü, virgülle ayırarak gerekli olanlarla değiştirmeniz yeterlidir.

Sonuç olarak çıktı, tüm kayıtlar için başlık biçiminde alanların adlarını ve bunlarla ilgili bilgileri içerecek normal bir metin dosyası olacaktır. Normal şartlarda açılabilir Metin düzeltici, oluştururken hangi çözünürlüğü verirseniz verin.

Ortaya çıkan dosyanın elektronik tablo düzenleyicilerinde doğru şekilde görüntülenmesi için MySQL veritabanından verileri xls veya csv formatında dışa aktarmak istiyorsanız, bunu nasıl yapacağınızı biraz sonra anlatacağız :)

Sorguları kullanarak MySQL veritabanından yedekleme oluşturma ve veri çıktısı alma

Bir MySQL veritabanının (bir veya daha fazla) ve ayrı ayrı tabloların nasıl boşaltılacağı hakkında konuştuk. Ancak bazen pratikte tek bir tabloyla sınırlı olmayan bir veri kümesini dışa aktarmanız gereken durumlar vardır. Veya tablodan yalnızca bazı verileri seçmeniz gerekir.

Kurumsal projelerin geliştiricileri, özellikle yöneticiler onlardan her türlü istatistiksel veriyi sağlamalarını istediğinde bu durumla sıklıkla karşılaşırlar. Veya tablonun belirli bir bölümünü hızlı bir şekilde geri yüklemek için yedeklemeniz gerektiğinde.

Yedekleme için aynı yardımcı programa ihtiyacımız olacak mysqldump, bunun şu şekilde çağrılması gerekecek:

Mysqldump -u kullanıcı_adı -p veritabanı_adı tablo_adı --burada "arama" > yol_ve_döküm_dosya_adı

Sonuç olarak, tüm yapısını içeren bir tablo oluşturmak için SQL komutlarını içeren bir dosya alacağız ve bu tablo, oluşturulduktan sonra bir arama sorgusu kullanılarak seçilen bilgilerle doldurulacaktır.

Yalnızca bir veya daha fazla tabloda depolanan verileri almamız gerekiyorsa, önceki durumda tablodaki tüm verileri alırken kullanılan komutu yalnızca bazı açıklamalarla değiştirmemiz gerekecektir:

Mysql -u kullanıcı_adı -p -e "Tablo_adı NEREDEN * SEÇİN" > yol_ve_dosya_adı

Anladığınız gibi, direktif kullanılarak yapılan talepte belirtilen çeşitli açıklamalara ek olarak NEREDE, diğer SQL yapılarını kullanabilirsiniz: KATILMAK, BİRLİK vesaire.

İstediğiniz istatistikleri toplayabilirsiniz :)

Aynı eylem, aşağıdaki komutu kullanarak MySQL komut satırında çalışırken de gerçekleştirilebilir:

SELECT * FROM veritabanı_tablosundan NEREDE arama INTO OUTFILE "yol_ve_dosya_adı";

Bu komut özellikle örnekleme sonuçları içeren dosyalar oluşturmak için tasarlanmıştır. Üstelik sonuçlar yalnızca dosyalara aktarılamaz, aynı zamanda değişkenlere de yazılabilir ve çıktı verileri çeşitli şekillerde biçimlendirilebilir.

Yukarıdaki durum söz konusuysa, bu komutu çağırmak için parametrelerin ve seçeneklerin tam listesini burada bulabilirsiniz - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Mysqldump'a kısa gezimi sonuçlandırmak için, MySQL veritabanı ve tablolarının optimize edilmiş bir dökümünü oluşturmak, veritabanını ve ayrı ayrı tabloları geri yüklemek için, daha az zaman alacak olan parametreler listesiyle bir komut çağırmanın bir versiyonunu vermek istiyorum. düzenli bir arama:

mysqldump -u kullanıcı_adı -h ana bilgisayar_veya_IP_MySQL_sunucusu -p --no-autocommit --opt veritabanı_adı > yol_ve_döküm_dosya_adı;

Deney amacıyla, 143 MB boyutunda bir MySQL veritabanını boşaltmak için bu seçeneği kullandım. Sonraki geri yükleme, veritabanının özel parametreler olmadan mysqldump çağrılarak yapılan bir dökümden geri yüklenmesiyle karşılaştırıldığında 1 dakika 3 saniyeye kıyasla 59 saniye sürdü.

Bunun küçük bir şey olduğuna katılıyorum. Ancak bu yalnızca durumda verilen hacim veri. 1 GB'tan büyük bir döküm oluştururken bu tekniği kullanırsanız fark daha önemli olacaktır.

Böyle bir durumla karşılaşırsanız öncelikle MySQL veritabanı dökümünü arşivlemeyi unutmayın. En iyisi tar.gz'dir. O zaman iyileşme daha da az zaman alacaktır.

Verileri MySQL'den Excel'e ve csv dosyalarına aktarın

MySQL'den bilgi çıktısı almayla ilgili bilgileri bu iki formatta tek blokta birleştirmem boşuna değildi, çünkü... çok benzerler, yaklaşık olarak aynı şekilde kullanılırlar (bilgiyi tablolar şeklinde yapılandırmak için) ve dışa aktarma için aynı komutlar çağrılır.

Bildiğiniz gibi bu formatlar arasındaki tek önemli fark xls ve xlsx uzantılı dosyaların Microsoft programı Yalnızca Windows'ta çalışan Office Excel ve csv dosyası'ler daha evrenseldir ve birçok editörde onlarla işlem yapmak mümkündür.

Bu, xls'in dışında herhangi bir yerde olduğu anlamına gelmez Microsoft Office Excel açılmıyor. Aynı OpenOffice bunun tersini doğruluyor.

Ancak bunun mümkün olabilmesi için bu desteğin mevcut olması gerekir. yazılım ürünü. csv dosyaları Notepad gibi sıradan bir metin düzenleyicide bile okunabilir ancak bu form tamamen okunamaz.

Yalnızca sonuçların xls veya csv'ye aktarılabileceği gerçeğiyle başlayayım SQL sorguları daha önce üzerinde çalışmayı öğrendiğimiz, çünkü tek bir işlemle tüm veritabanını tek bir dosyaya çıkarmak imkansız olacaktır.

Öncelikle bu optimal değil çünkü... Veritabanında büyük miktarda bilgi depolanıyorsa böyle bir dosyanın açılması pek olası değildir. İkincisi, dosya içindeki bilgilerin tablolara ve alanlara nasıl bölüneceği açık değildir.

Hayır, elbette bunu yapmak mümkün ancak tek komutla yapılması pek mümkün değil ve genel olarak bunu konsolda herhangi birinin yapması pek mümkün değil. Bu amaçlar için özel bir yazılıma veya en azından bir komut dosyasına ihtiyacınız olacağını düşünüyorum.

Birdenbire tüm MySQL veritabanındaki bilgileri konsoldaki bir veya birkaç xls dosyasına aynı anda nasıl aktarabileceğinizi öğrenirseniz, yorumlara bunun hakkında yazın. Bu konuyu okumanın birçok kişiye faydalı olacağını düşünüyorum.

Dolayısıyla, verileri MySQL'den xls ve csv'ye nasıl aktaracağımızdan bahsediyorsak, bu, yardımcı program aracılığıyla doğrudan sunucu konsolunda yapılabilir. MySQL veya önceki yazımda size tanıttığım çalışmamda.

Sırayla başlayalım.

Aşağıdaki komutları kullanarak MySQL veritabanındaki verileri doğrudan sunucu konsolunda csv ve xls formatlarına aktarabilirsiniz.

Açık Linux sistemler:

Mysql -u kullanıcı adı -d veritabanı_adı -p -e "Veritabanı_tablosundan * SEÇİN;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > yol_ve_dosya_adı. csv

Prensip olarak, kesinlikle gerekliyse, MySQL verilerini bir Excel dosyasına aktarmak için bu komutu kullanabilirsiniz. Ama dürüst olmak gerekirse, bunu pratikte ele almadım ve sonunda ne çıkacağına dair hiçbir fikrim yok, çünkü... Şu anda Windows üzerinde çalışıyorum. Bu komutu Linux altında kullanıyorsanız, lütfen çalışmanızın sonuçlarıyla ilgili yorumlarınızı yazınız. Bilgilerin herkesin ilgisini çekeceğini düşünüyorum.

Açık pencereler:

Ne yazık ki, yukarıdaki komutu kullanarak MySQL tablolarından csv'ye veri aktarmak bu durumda işe yaramayacaktır çünkü Windows, Linux'tan farklı olarak, Linux'taki sed gibi iş parçacıklarıyla çalışmak için yerleşik bir konsol komutuna sahip değildir.

Tabii ki kurabilirsiniz, ancak bu çok fazla güçlüktür. Alternatif olarak şunları kullanabilirsiniz: CygWin— Windows sistemleri için Linux konsol emülatörü.

Zaten yüklediyseniz iyi olur. Aksi takdirde seçilen yöntemi kullanarak MySQL veritabanından veri aktarmak bize çok fazla sorun çıkaracaktır.

Ancak bir xls dosyasına bilgi çıkarmak 5 kopek kadar kolaydır :) Kişisel olarak denediğim şu şekilde başlatmak çok kolaydır:

Mysql -u kullanıcı adı -d veritabanı_adı -p -e "Veritabanı_tablosundan * SEÇİN;" > yol_ve_dosya_adı.xls

Bu dosya Microsoft Office Excel'de hiçbir sorun olmadan açıldı. Tek şey, dosyayı açarken ekranda, açılan dosyanın gerçek formatının belirtilen uzantıdan farklı olduğunu belirten bir uyarının görüntülenmesidir.

Ancak eylemi onaylarken, belge zorluk çekmeden açıldı - tüm bilgiler, tablonun kendisinde saklandığı biçimde hücrelere bölündü.

Bilmiyorum, belki Microsoft Office Excel'de herhangi bir belirli eylem gerçekleştirirseniz gelecekte sorunlar ortaya çıkabilir; En azından verilere normal bir şekilde baktığımda olağandışı bir şey görmedim.

MySQL'den dışa aktarılan xls dosyasını bu programda veya başka programlarda kullanırken herhangi bir sorunla karşılaşırsanız, lütfen yorumlarda bana bildirin.

Yukarıda açıklanan yöntemi kullanarak, prensip olarak MySQL veritabanının içeriğini bir csv dosyasına aktarabilirsiniz. Ancak daha sonra tablonun farklı alanlarından gelen veriler, genellikle csv dosyalarıyla çalışan tablolarla çalışmak için çeşitli programlarda iyi görüntülenemeyen sınırlayıcılar olmadan toplu olarak yazılacaktır.

OpenOffice bu arada umursamıyor :) MySQL veritabanının içeriğini xls'e aktarma şeklimizle elde edilen bilgileri otomatik olarak sınırlandırdı. Nasıl yaptığını bilmiyorum ama kullanmanızı tavsiye ederim :)

Aynı Microsoft Office Excel, tablodaki bir kayda karşılık gelen tüm bilgileri hiçbir sınırlayıcı olmadan tek bir hücreye yazarak görüntüledi. Diğer tablo editörlerinin de aynısını yapacağını düşünüyorum.

Bu nedenle MySQL veritabanını csv dosyalarına aktarırken bunu, bilgileri editörlerin anlayacağı özel karakterlerle ayırarak yapmanız gerekir.

Ve sonra yavaş yavaş MySQL verilerini csv ve xls'ye aktarmanın ikinci yöntemine, yani MySQL komut satırını kullanmaya yaklaştım.

Dolayısıyla MySQL verilerini bu şekilde bir csv dosyasına aktarmak için aşağıdaki komuta ihtiyacımız var:

SELECT * FROM veritabanı_tablosundan OUTFILE "path_and_file_name.csv" TARAFINDAN SONLANDIRILAN ALANLAR, "" İLE EKLENEN """ SATIRLAR "\n" TARAFINDAN SONLANDIRILDI;

Yürütülmesinin bir sonucu olarak, çağırırken belirttiğiniz yolda, çoğu modern elektronik tablo düzenleyicide doğru şekilde açılacak bir csv dosyası alacaksınız. Her ihtimale karşı, bu komutu yalnızca MySQL veritabanına bağlandıktan sonra çalıştırmanız gerektiğini hatırlatırım.

Bu komut aynı zamanda MySQL verilerini Microsoft Office Excel'de doğru görüntülenmek üzere bir xls dosyasına aktarmak için de mükemmeldir. Ancak bu durumda ayırıcılara ihtiyacımız yok çünkü bilginin hücrelere bölünmesine müdahale edecekler:

SELECT * FROM veritabanı_table'dan INTO OUTFILE "path_and_file_name.xls";

Ancak pratikte her şey anlattığım kadar basit değil. Komutu çalıştırırken konsolda dışa aktarmanın tamamlanmasını engelleyen aşağıdaki hatayla karşılaşabilirsiniz:

HATA 1290 (HY000): MySQL sunucusu --secure-file-priv seçeneğiyle çalıştığından bu ifadeyi çalıştıramıyor

Bunun nedeni MySQL sunucunuzun bu seçenekle başlatılmasıdır. --güvenli-dosya-özel. Şahsen ben bu sorunla, konsolda çalışmak için WAMP OpenServer kitinde yer alan MySQL dağıtımını kullanmam ve bunun da MySQL sunucusunu bu şekilde başlatması nedeniyle karşılaştım.

Sorunu çözmenin iki yolu vardır:

  • Başlatma seçeneklerini değiştirin MySQL sunucuları
  • Son MySQL dışa aktarma dosyasının yolunu değiştirin

İlk yöntem bana çok karmaşık geldi çünkü... Benim tarafımdan yazılmayan OpenServer konfigürasyonunu sonraki tüm koşullarla birlikte araştırmam gerekecekti 🙂 Bu nedenle ikinci yolu seçmeye karar verdim. Benzer bir sorunla karşılaşırsanız benden sonra tekrarlayın.

Öncelikle MySQL komut satırına gitmeniz ve aşağıdaki komutlardan birini çalıştırmanız gerekir:

"secure_file_priv" GİBİ DEĞİŞKENLERİ GÖSTER; @@GLOBAL.secure_file_priv'i SEÇİN;

Her ikisini de yürütmenin sonucu MySQL global değişkeninin değeri olacaktır. secure_file_priv MySQL veri dışa aktarma ve içe aktarma işlemlerinin gerçekleştirilebileceği dizinin yolunu içeren (gelecekte veri içe aktarmayla ilgili bir makaleye bağlantı).

Onlar. komutları kullanırken VERİ YÜKLE Ve SEÇ... ÇIKIŞ DOSYASINA dışa aktarılan ve içe aktarılan dosyalar yalnızca bu dizinde bulunabilir.

Benim durumumda bu değişken genellikle şu şekilde ayarlandı: HÜKÜMSÜZ, Çünkü Daha önce de söylediğim gibi, konsolda çalışmak için OpenServer'da bulunan dağıtımdaki MySQL yardımcı programlarını kullanıyorum. Bu değer, belirtilen komutları kullanan MySQL veri verme ve alma işlemlerinin tamamen kapatıldığını gösteriyordu.

Daha sonra ortaya çıktığı gibi, kutulu WAMP ve MAMP sunucuları kullanılırken bu yaygın bir durumdur.

Ne yazık ki benim durumumda MySQL global değişkenlerinin değerlerini değiştirmek için olağan yöntemleri kullanmak mümkün değildi:

SET değişken_adı = değer;

Sonuç olarak konsolda yalnızca aşağıdaki hatayı gördüm:

1. satırda HATA 1238 (HY000): "secure_file_priv" değişkeni salt okunur bir değişkendir.

Sonuç olarak bir değişkenin değerini değiştirmek secure_file_priv ve dışa aktarma ve içe aktarma işlemlerini açmam için, MySQL dağıtımının kök dizininde bulunan veya WAMP/LAMP/'ınıza MySQL dahil edilmişse başka bir şekilde erişilebilen MySQL yapılandırma dosyası mysql.ini'ye gitmem gerekiyordu. MAMP sunucusu yapısı.

Bu arada, dosya alışverişi biriktirme dizininin yolunu değiştirmek istiyorsanız, aynısını yapmanız gerekecektir.

Benim durumumda, bu değişken yapılandırmada zaten mevcuttu, yalnızca yorumlanmış biçimde:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

Eğer elinizde yoksa, bölüme sıfırdan yazın. (en azından benim için oradaydı).

Yorumunu kaldırdım ve yazıldığı haliyle kullanmaya karar verdim. Onlar. MySQL'den veri aktarıp geri alırken dosyalarım artık bir dizinde saklanacak c:\openserver\kullanıcı verileri\temp\.

Yapılandırmayı değiştirdikten sonra (bu arada herhangi bir yapılandırmayı), değişikliklerin etkili olması için mümkünse sunucunuzu veya ayarlarını düzenlediğiniz ayrı bir hizmeti yeniden başlatmayı unutmayın!

Emin olmak için MySQL sunucusunu yeniden başlattıktan sonra değişkeni tekrar görüntüleyin. secure_file_priv ve değerini panoya kopyalayın.

Ve şimdi komutu başlangıçta olduğu gibi çağırmamız gerekiyor, yalnızca MySQL veritabanındaki bilgilerin kaydedileceği dosyanın adından önce, değiştirdiğimiz değişkende saklanan yolu aşağıdaki biçimde yazmamız gerekiyor:

SELECT * FROM veritabanı_table'dan INTO OUTFILE "secure_file_priv_value\file_name.csv";

Bundan sonra MySQL'den veri aktarmak benim durumumda işe yaradı.

Önemli nokta! Windows altında MySQL ile çalışıyorsanız, dosyanın yolunu belirtirken “\” ifadesini “/” olarak değiştirmeyi unutmayın, aksi takdirde hata şu şekilde olacaktır: --güvenli-dosya-özel görünmeye devam edecek.

Bu, MySQL veritabanının ve tablolarının nasıl boşaltılacağına ve ayrıca MySQL tablolarındaki çıktı verilerinin çeşitli formatlara nasıl aktarılacağına ilişkin makalenin sonuncusudur. İncelemelerinizi yorumlara yazın ve pratikte en sık kullandığınız script seçeneklerinizi herkesle paylaşın.

Makaleyi beğendiyseniz, makaleyi yeniden yayınlayarak yazara teşekkür edebilirsiniz. sosyal medya veya finansal olarak aşağıdaki formu kullanarak, temel barındırma için ödeme yapabilirsiniz.

Herkese iyi şanslar ve tekrar görüşmek üzere! 🙂

Not:: Bir web sitesine ihtiyacınız varsa veya mevcut bir sitede değişiklik yapmanız gerekiyorsa ancak bunun için zaman veya istek yoksa, hizmetlerimi sunabilirim.

5 yıldan fazla deneyim profesyonel web sitesi geliştirme. Birlikte çalışmak PHP

Bir web sitesi oluşturmaya yeni başladığınızda, bunu genellikle yerel bir sunucuda yaparsınız. Hazır olduğunda uzak bir sunucuya taşınması gerekecektir. Dosyaları kopyalamak zor değil, ancak nasıl yapılacağı aşağıda açıklanmıştır veritabanını içe aktar uzak bir sunucuya mı? Hemen hemen PHPMyAdmin'e bir veritabanı nasıl aktarılır, bu yazımda sizlere anlatacağım.

Birçok yolu var veritabanı içe aktarma Ancak ben size en basit olduğunu düşündüğüm ve kendi kullandığımı anlatacağım.

Aşama 1

Yapmanız gereken ilk şey veritabanını dışa aktar geçerli konumunuzdan (özellikle yerel bir sunucudan). Amacımız elde etmektir SQL sorgusu veritabanımız. Bunu yapmak için aşağıdakileri yapmanız gerekir:

Adım 2

İkinci ve son adım infaz mı SQL sorgusu kopyaladığınız PHPMyAdmin ihtiyacınız olan sunucuda bulunan veritabanını içe aktar. Bunu yapmak için şu adımları izleyin:

Sonuç olarak tüm tablolarınız tüm kayıtlarla birlikte yeni sunucuda oluşturulacaktır.

Gördüğünüz gibi süreç PHPMyAdmin'de bir veritabanını dışa ve içe aktarma minimuma kadar basitleştirildi, bu nedenle bununla ilgili herhangi bir sorun olmayacak.

Son olarak size bir tavsiye daha vermek istiyorum. Gerçek şu ki, çoğu zaman ihtiyacınız olduğunda bir durum vardır. veritabanının tamamını içe aktarma, ancak örneğin yalnızca bir tablo. O zaman prensip kesinlikle aynıdır, yalnızca dışa aktarırken yalnızca veritabanını değil aynı zamanda dışa aktarılacak tabloyu da seçmeniz gerekir. Ve sonra tekrar üst menüde "'ye tıklayın İhracat". O zaman her şey aynı veritabanı içe aktarma.