MySQL verilənlər bazalarının idxalı. phpMyAdmin məhdudiyyətlərini keçərək böyük MySQL verilənlər bazasını necə idxal etmək olar

24.03.2023

Günortanız xeyir dostlar, bu gün necə edəcəyimizi öyrənəcəyik. Nə üçündür, sual verə bilərsiniz. Hər şeydən əvvəl verilənlər bazası ixracı fövqəladə hallarda sizin üçün vacib olan məlumatları itirməmək üçün vaxtaşırı edilməlidir. İxrac verilənlər bazası haqqında bütün məlumatları saxlayacaq kiçik bir fayl olacaq. üçün verilənlər bazası ixracı PHPMyAdmin-ə daxil olub, maraqlandığınız verilənlər bazasına klik etməlisiniz. Bundan sonra siz içindəki bütün cədvəlləri görəcəksiniz və onlara daxil olmadan ixrac adlanan menyu düyməsini klikləyin. Qarşınızda aşağıdakı səhifə görünəcək:


Sürətli ixrac üsulunu seçməyi, həmçinin formatda göstərməyi məsləhət görürəm SQL. Bundan sonra ok düyməsini sıxa bilərsiniz. Faylı saxlamağınızı xahiş edən bir pəncərə görəcəksiniz.


Faylı sizə lazım olan yerdə saxlayırsınız, əsas odur ki, onu harda saxladığınızı xatırlayın, çünki bu, bizim üçün çox vacibdir.
Adi ixrac üsuluna gəlincə. Ehtiyacınız olduqda onu da istifadə edə bilərsiniz, ixrac edərkən təyin edə biləcəyiniz bir çox əlavə parametrlər var. Məsələn, verilənlər bazasından lazımi cədvəlləri seçin, kodlaşdırmanı təyin edin və daha çox. Bu parametrlə maraqlanırsınızsa, onu görə bilərsiniz. Amma biz bu parametri araşdırmayacağıq.
Faylı kompüterinizdə saxladıqdan sonra verilənlər bazasını silməyinizi xahiş edəcəyəm. Bunu necə etmək olar, sizə izah etməyəcəyəm, çünki biz artıq bundan keçmişik. Silməkdən qorxmayın, sizinlə birlikdə hər şeyi öz yerinə qaytaracağıq.
Məşğul olmaq vaxtıdır verilənlər bazası idxalı. İdxal menyusuna keçin.


Biz kompüterinizin icmalını seçirik və faylımıza gedən yolu göstəririk. Və OK düyməsini basın. Gördüyünüz kimi, səhviniz var. Narahat olmayın, iş ondadır ki, biz verilənlər bazasının özünü deyil, yalnız onun bütün cədvəllərini idxal etdik. Buna görə əvvəlcə verilənlər bazası yaradın, ona daxil olun və yuxarıda göstərilənlərin hamısını yerinə yetirərək idxal düyməsini basın. OK düyməsini klikləməklə, uğur qazanacaqsınız və hər şeyi düzgün etmisinizsə, heç bir səhv görünməməlidir.


Gördüyünüz kimi, cədvəlimiz yenidən öz yerində göründü və içindəki bütün məlumatlar saxlandı. İndi başa düşürsən ki, nə gözəl fürsətdir PHPMyAdmin-də verilənlər bazası ixracı və idxalı. Axı, bir gündə bütün inkişaflarınızı uzun illər itirsəniz, bu fayl sayəsində hər şeyi geri qaytara bilərsiniz. Bununla da tezliklə sizinlə vidalaşıram.

Salam, dostlar! 🙂

Bu gün konsolda MySQL ilə işləmək haqqında danışmağa davam etmək və verilənlər bazası ixrac proseduruna diqqət yetirmək qərarına gəldim. MySQL məlumatları.

Məqalədə zibilin necə ediləcəyi barədə danışacağam MySQL verilənlər bazası, həmçinin məlumatları MySQL-dən Excel faylına və csv formatına ixrac edin.

Məlumat çıxarmağın müxtəlif variantlarını nəzərdən keçirəcəyik: bir və bir neçə verilənlər bazası zibilinin yaradılması, ayrı-ayrı cədvəllərdən məlumatların ixracı və ixtiyari nəticələrin SEÇİN istək.

Həm də MySQL verilənlər bazasından verilənlərin server konsolunda necə göstərilməsindən danışaq və komanda xətti MySQL.

Bu yazıda phpMyAdmin və digər vizual vasitələrdən istifadə edərək məlumatların necə ixrac olunacağı barədə danışmayacağam.

Birincisi, çünki bu mövzuda şəbəkədə kifayət qədər material var. Üstəlik, kopyala-yapışdırmaq istəyi ilə yandırmadığım yüksək keyfiyyətli material.

İkincisi, mən özüm haqqında bəhs etdiyim məqalələrimin birində MySQL verilənlər bazasından SQL faylına məlumatın çıxarılması prosesini qısaca nəzərdən keçirdim.

Beləliklə, əgər siz konsolla işləmək haqqında faydalı məlumat tapa biləcək peşəkar tərtibatçı və ya sistem administratoru deyilsinizsə və yalnız verilənlər bazasını phpMyAdmin-ə ixrac etmək üçün təlimat almaq üçün gəlmisinizsə, o zaman yuxarıdakı linkdən məlumatları oxumaqla məhdudlaşa bilərsiniz.

Məni düzgün başa düşməyinizi istəyirəm: sizi heç bir şəkildə incitmək istəmirəm, sadəcə olaraq, vaxtınızı səbəb üçün maksimum fayda ilə keçirməyinizi və axtardığınızı əldə etməyinizi istəyirəm.

Bu, giriş hissəsini yekunlaşdırır və biz MySQL verilənlər bazası zibilini yaratmaq üçün konsol əmrlərinin icmalına keçirik, onu saxlanan məlumatların miqdarına görə çeşidləmək qərarına gəldim: bütün verilənlər bazasını ixrac etməkdən tutmuş fərdi cədvəllərə və ixtiyari sorğuların nəticələrinə .

Konsol vasitəsilə MySQL verilənlər bazası zibilinin yaradılması

Əvvəlcə kiçik bir aydınlıq gətirmək istəyirəm.

Baza zibilxanası işə salındıqda verilənlər bazası və cədvəllər yaratmağa, həmçinin onları informasiya ilə doldurmağa imkan verən SQL əmrləri toplusuna malik fayldır. MySQL verilənlər bazasını başqa bir serverə və ya mövcud serverə köçürmək üçün yükləmək istəyənlər üçün dump lazımdır.

Həmçinin, əgər kimsə məlumatlı deyilsə, MySQL verilənlər bazası ehtiyat nüsxəsi, əslində, müəyyən bir müddət ərzində onun tullantısıdır ki, bu da lazım olduqda verilənlər bazası strukturunu və məlumatları bərpa etməyə imkan verir.

Məlumat ixracı- bu, sadəcə mətn və ya qrafik redaktorlarla sonrakı iş üçün mətn şəklində cədvəllərdən məlumatın çıxarılmasıdır.

Buna görə də, bu hərəkətlər üçün əmrlər bir az fərqli olacaq.

Verilənlər bazası zibilini yaratmaq üçün MySQL adlı daxili yardım proqramı var mysqldump, server konsolunda və ya digər qabıqda MySQL əmr sətirindən kənarda istifadə ediləcək.

Beləliklə, ən sadə və ən çox yayılmış seçim üçün - başqa bir serverə və ya daxili nüsxəyə ötürmək üçün MySQL konsolunda xüsusi verilənlər bazasından məlumatları ixrac etmək üçün aşağıdakı əmri yerinə yetirməlisiniz:

mysqldump -u istifadəçi adı -p verilənlər bazası_adı > yol_və_dump_fayl_adı

Bu yardım proqramı MySQL verilənlər bazası zibillərini yalnız SQL əmrləri olan fayllar şəklində yarada bilər, ona görə də faylınız üçün hansı uzantı seçsəniz, istənilən halda onun məzmunu eyni olacaq. MySQL-dən məlumat ixrac etməzdən əvvəl onun yerləşəcəyi kataloqun yazma icazələrini yoxlamağı unutmayın ki, faylın yaradılması mümkün olsun.

Birdən serverdəki bütün verilənlər bazası ilə zibil etmək lazımdırsa, aşağıdakı əmr seçimindən istifadə edin:

mysqldump -u istifadəçi adı -p --all-databases > path_and_dump_file_name

Yalnız bir neçə xüsusi verilənlər bazasını boşaltmaq üçün aşağıdakı seçimlərlə mysqldump-a zəng etməlisiniz:

mysqldump -u istifadəçi adı -p - verilənlər bazası verilənlər bazası_adı1, verilənlər bazası_adı2, ... > yol_və_dump_fayl_adı

Nəticədə, hər bir halda siz daxil olan cədvəllərin strukturunu (sahələr, onların növləri, indekslər, açarlar və s.) Yaratmaq üçün əmrləri, habelə onların məlumatlarla doldurulması əməliyyatlarını ehtiva edən MySQL verilənlər bazası zibilini alacaqsınız.

Bu seçim yalnız bütün verilənlər bazalarını bərpa etmək və kopyalamaq üçün uyğundur.

Müəyyən MySQL cədvəllərinin ehtiyat nüsxələrini necə çıxarmaq və onların məlumatlarını oxunaqlı formada əldə etmək daha sonra müzakirə olunacaq.

MySQL cədvəlinin boşaldılması və məlumatların ixracı

Müəyyən MySQL verilənlər bazası cədvəllərinin zibilini yaratmaq üçün bizə eyni yardım proqramı lazımdır mysqldump, aşağıdakı parametrlərlə çağırılır:

mysqldump -u istifadəçi adı -p verilənlər bazası_adı cədvəl_adı1, cədvəl_adı2, ... > yol_və_dump_fayl_adı

Hətta mysqldump-a zəng edərkən lazım olan cədvəlləri parametr dəyəri kimi təyin edə bilərsiniz --masalar, hansı parametrdən istifadə edərkən --verilənlər bazaları nəzərə alınmayacaq:

mysqldump -u istifadəçi adı -p - verilənlər bazası verilənlər bazası_adı1, verilənlər bazası_adı2 --cədvəllər cədvəl_adı1, cədvəl_adı2, ... > yol_və_dump_fayl_adı

Yuxarıdakı nümunə aşağıdakı səhvi göstərəcək:

Mysqldump: Səhv alındı: 1049: Verilənlər bazasını seçərkən naməlum verilənlər bazası "database_name1"

Gördüyünüz kimi, qeyd olunanların siyahısından yalnız ən son verilənlər bazası istifadə olunacaq. Prinsipcə, bu davranış olduqca məntiqlidir, çünki. bütün verilənlər bazalarında göstərilən cədvəllər olmaya bilər.

Yaxşı, bizdə MySQL verilənlər bazası cədvəllərinin zibilliyi var. Onları bərpa etmək və ya strukturla birlikdə kopyalamaq üçün istifadə edilə bilər.

Bəs sadəcə olaraq onlarda saxlanan məlumatları və daha yaxşısı oxunaqlı formada əldə etmək lazımdırsa, onu menecerə göndərə və adi mətn və ya cədvəl redaktorunda görə biləsən? MySQL-də bunun üçün alətlər də var.

Kommunal xidmətə zəng etmək seçimi məqsədlərimizə çatmağa kömək edəcək. mysql müəyyən parametrlərlə konsoldan:

Mysql -u istifadəçi adı -p verilənlər bazası_adı -e "Cədvəl_adından * SEÇİN"

Bu əmr bizə MySQL komanda xəttinə keçmədən tələb olunan verilənlər bazasına sorğu yerinə yetirməyə və nəticəni konsola çıxarmağa imkan verəcək.

Yaxşı, məlumatları konsola çıxarmaq deyil, onları fayla yazmaq üçün əmri aşağıdakı kimi əlavə etməlisiniz:

Mysql -u istifadəçi adı -p -e "Cədvəl adından * SEÇİN" > yol_və fayl adı

Bu konstruksiyalar sayəsində biz təkcə cədvəlin bütün sahələrində deyil, həm də konkret sahələrində saxlanılan məlumatları əldə edə bilirik. Bunun üçün joker simvollar (*) simvolu əvəzinə vergüllə ayrılmış tələb olunanları qeyd etmək kifayətdir.

Nəticədə, çıxışda başlıq şəklində sahələrin adlarını və bütün qeydlər üçün onlar haqqında məlumatları ehtiva edən adi mətn faylı alacağıq. Normal vəziyyətdə açıla bilər mətn redaktoru, onu yaradarkən hansı qətnamə verdiyinizdən asılı olmayaraq.

MySQL verilənlər bazasından məlumatları xls və ya csv formatında ixrac etmək istəyirsinizsə, nəticədə əldə olunan fayl elektron cədvəl redaktorlarında düzgün göstərilsin, bunun necə ediləcəyi bir az sonra müzakirə olunacaq 🙂

Sorğulardan istifadə edərək MySQL verilənlər bazasından ehtiyat nüsxələrin yaradılması və məlumatların çıxarılması

MySQL verilənlər bazasını necə boşaltmaq barədə danışdıq - bir və bir neçə, eləcə də onların fərdi cədvəlləri. Ancaq bəzən praktikada bir cədvəllə məhdudlaşmayan bir məlumat dəstini ixrac etməyiniz lazım olan hallar olur. Və ya cədvəldən yalnız bəzi məlumatları seçmək lazımdır.

Menecerlər onlardan hər cür statistik məlumatları təqdim etməyi xahiş etdikdə korporativ layihələrin tərtibatçıları xüsusilə tez-tez bununla qarşılaşırlar. Və ya tez bərpa etmək üçün cədvəlin müəyyən bir hissəsinin ehtiyat nüsxəsini çıxarmaq lazım olduqda.

Yedəkləmə üçün bizə eyni yardım proqramı lazımdır mysqldump, bu belə adlandırılmalıdır:

Mysqldump -u istifadəçi adı -p dbname table_name --harada "axtar" > path_and_dump_file_name

Nəticədə, bütün strukturu ilə cədvəl yaratmaq üçün SQL əmrləri olan bir fayl alacağıq, yaradıldıqdan sonra axtarış sorğusu ilə seçilmiş məlumatlarla doldurulacaq.

Yalnız bir və ya bir neçə cədvəldə saxlanılan məlumatları əldə etmək lazımdırsa, onda biz cədvəldəki bütün məlumatları seçmək üçün əvvəlki vəziyyətdə istifadə olunan əmri yalnız bir neçə dəqiqləşdirmə ilə dəyişdirməliyik:

Mysql -u istifadəçi adı -p -e "Cədvəl_adından * SEÇİN HARADA axtarış edin" > yol_və fayl_adı

Anladığınız kimi, direktivdən istifadə edərək sorğuda göstərilən müxtəlif dəqiqləşdirmələrə əlavə olaraq HARADA, digər SQL konstruksiyalarından istifadə edə bilərsiniz: QOŞULUN, BİRLİK və s.

İstənilən statistika toplana bilər 🙂

Eyni hərəkət MySQL komanda xəttindən də aşağıdakı əmrlə yerinə yetirilə bilər:

SEÇİN * verilənlər bazası_cədvəlindən OUTFILE "yol_və_fayl_adını" axtarın;

Bu əmr yalnız seçimin nəticələri ilə fayllar yaratmaq üçün nəzərdə tutulmuşdur. Üstəlik, nəticələr yalnız fayllara ixrac edilə bilməz, həm də dəyişənlərə yazıla bilər və çıxış məlumatları müxtəlif yollarla formatlana bilər.

Əgər yuxarıda sizin vəziyyətiniz varsa, onda siz bu əmrə zəng etmək üçün parametrlərin və seçimlərin tam siyahısını burada tapa bilərsiniz - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

MySQLdump-a qısa turumun sonunda mən MySQL verilənlər bazası və cədvəllərinin optimallaşdırılmış zibilini yaratmaq, verilənlər bazasını və fərdi cədvəlləri bərpa etmək üçün parametrlər siyahısı ilə əmr çağırmaq seçimi vermək istəyirəm. normal zənglə:

mysqldump -u istifadəçi adı -h MySQL_server_host_or_IP -p --no-autocommit --opt database_name > path_and_dump_file_name;

Təcrübə naminə verilənlər bazasını boşaltmaq üçün bu seçimdən istifadə etdim MySQL ölçüsü 143 MB-da. Verilənlər bazası xüsusi seçimlər olmadan mysqldump-a zəng edərək edilən zibildən bərpa edildikdə, sonrakı bərpa 59 saniyə çəkdi, 1 dəqiqə 3 saniyə.

Razıyam ki, bu xırda şeydir. Ancaq bu yalnız bir vəziyyətdədir verilmiş həcm data. İstifadə edərsə bu texnika 1GB-dan böyük bir zibil yaratdıqda, fərq daha əhəmiyyətli olacaq.

Əgər belə bir vəziyyətlə qarşılaşsanız, əvvəlcə MySQL verilənlər bazası zibilini arxivə yığmağı unutmayın. tar.gz ən yaxşısıdır. Sonra bərpa daha da az vaxt aparacaq.

MySQL-dən Excel və csv fayllarına verilənləri ixrac edin

MySQL-dən məlumatın bu iki formata çıxarılması haqqında məlumatları bir blokda birləşdirməyim əbəs deyildi, çünki onlar çox oxşardırlar, onlar təxminən eyni şəkildə istifadə olunur (cədvəl şəklində məlumatı strukturlaşdırmaq üçün) və eyni əmrlər ixrac üçün çağırılacaq.

Bildiyiniz kimi, bu formatlar arasında yeganə əhəmiyyətli fərq, xls və xlsx uzantılarının Microsoft proqramında yaradılmış faylların olmasıdır. Office Excel, yalnız Windows altında işləyir, csv faylları isə daha çox yönlüdür və onlarla əməliyyatlar bir çox redaktorlarda mümkündür.

Bu, xls-in Microsoft Office Excel-dən başqa heç bir yerdə açılmayacağı anlamına gəlmir. Eyni OpenOffice bunun əksini təsdiqləyir.

Lakin bu ehtimal üçün bu dəstək proqram məhsulunda olmalıdır. csv faylları hətta Notepad kimi adi mətn redaktorunda da oxuna bilər, yalnız bu forma tamamilə oxuna bilməyəcək.

Başlamaq üçün, yalnız nəticələr xls və ya csv-ə ixrac edilə bilər SQL sorğuları, daha əvvəl işləməyi öyrəndiyimiz, çünki bütün verilənlər bazasını bir faylda bir əməliyyatda göstərmək mümkün olmayacaq.

Birincisi, bu optimal deyil, çünki belə bir faylın verilənlər bazasında saxlanılan böyük miqdarda məlumatla açılması ehtimalı azdır. İkincisi, məlumatı faylın içərisində cədvəllərə və sahələrə necə bölmək aydın deyil.

Xeyr, əlbəttə ki, bunu etmək mümkündür, lakin çətin ki, bir komanda bunu etsin və ümumiyyətlə konsolda kimsə bunu edəcək. Düşünürəm ki, bu məqsədlər üçün sizə xüsusi proqram təminatı və ya ən azı skript lazımdır.

Birdən bütün MySQL verilənlər bazasından məlumatı konsolda bir və ya bir neçə xls faylına bir anda necə ixrac edə biləcəyinizi bilirsinizsə, bu barədə şərhlərdə yazın. Düşünürəm ki, bu barədə oxumaq çoxlarına faydalı olacaq.

Beləliklə, məlumatları MySQL-dən xls və csv-ə necə ixrac etmək barədə danışırıqsa, o zaman kommunal vasitəsilə birbaşa server konsolunda edə bilərsiniz. mysql və ya əvvəlki məqaləmdə sizə təqdim etdiyim işdə.

Sıra ilə başlayaq.

Siz MySQL verilənlər bazasından məlumatları csv və xls formatlarına birbaşa server konsolunda aşağıdakı əmrlərdən istifadə edərək ixrac edə bilərsiniz.

Aktiv linux sistemlər:

Mysql -u istifadəçi adı -d dbname -p -e "SEÇ * FROM dbtable;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > yol_və fayl_adı. csv

Prinsipcə, tamamilə zəruri olduqda, MySQL məlumatlarını Excel faylına ixrac etmək üçün bu əmrdən istifadə edə bilərsiniz. Ancaq düzünü desəm, praktikada məlumatlarla məşğul olmadım və sonunda nə çıxacaq - heç bir fikrim yoxdur, çünki. İndi Windows altında işləyirəm. Bu əmri Linux altında istifadə edirsinizsə, zəhmət olmasa işinizin nəticələri haqqında şərhlərdə yazın. Hesab edirəm ki, məlumat hər kəs üçün maraqlı olacaq.

Aktiv Windows:

Yuxarıdakı komanda ilə MySQL cədvəllərindən məlumatların csv-yə ixracı təəssüf ki, bu halda uğur qazanmayacaq, çünki Windows-da Linux-dan fərqli olaraq daxili sistem yoxdur konsol əmri Linux-da olan axınlarla işləmək.

Quraşdırın, əlbəttə ki, edə bilərsiniz, amma çox problem var. Alternativ olaraq siz də istifadə edə bilərsiniz CygWin Windows sistemləri üçün Linux konsol emulyatorudur.

Yaxşı, əgər siz artıq quraşdırmısınızsa. Əks halda, MySQL verilənlər bazasından məlumatların seçilmiş şəkildə ixracı bizə çox problem gətirəcək.

Ancaq xls faylına məlumat çıxarmaq 5 qəpik qədər asandır 🙂 Bunu şəxsən cəhd etdiyim aşağıdakı şəkildə idarə etmək çox asandır:

Mysql -u istifadəçi adı -d dbname -p -e "SEÇ * FROM dbtable;" > yol_və fayl_adı.xls

açıldı verilmiş fayl Microsoft Office Excel-də heç bir problem olmadan. Yeganə odur ki, açılan faylın faktiki formatının göstərilən uzantıdan fərqli olduğu barədə xəbərdarlıq mesajı açıldı.

Ancaq hərəkəti təsdiqləyərkən sənəd çətinlik çəkmədən açıldı - bütün məlumatlar cədvəlin özündə saxlandığı formada hüceyrələrə bölündü.

Bilmirəm, bəlkə də Microsoft Office Excel-də hər hansı konkret hərəkəti yerinə yetirərkən gələcəkdə problemlər yaranacaq, mən o qədər də dərindən qazmadım. Məlumatların adi görünüşündə, heç olmasa, qeyri-adi bir şeyə rast gəlmədim.

MySQL-dən ixrac edilən xls faylını bu proqramda və ya digər proqramlarda istifadə edərkən hər hansı problemlə qarşılaşsanız, şərhlərdə mənə bildirin.

Yuxarıda təsvir edilən şəkildə MySQL verilənlər bazasının məzmununu prinsipcə csv faylına ixrac edə bilərsiniz. Lakin sonra cədvəlin müxtəlif sahələrindən alınan məlumatlar toplu şəkildə, ayırıcılar olmadan yazılacaq, bu da zəif göstərilə bilər. müxtəlif proqramlar csv faylları ilə işləyən cədvəllərlə işləmək.

OpenOffice, yeri gəlmişkən, vecinə deyil 🙂 MySQL verilənlər bazasının məzmununu xls-ə ixrac etdiyimiz zaman əldə etdiyimiz məlumatları avtomatik olaraq sərhəddi. Bunu necə etdiyini bilmirəm - amma istifadə etməyi məsləhət görürəm 🙂

Yaxşı, eyni Microsoft Office Excel cədvəldə bir qeydə uyğun gələn bütün məlumatları heç bir ayırıcı olmadan bir hüceyrəyə yazaraq göstərdi. Düşünürəm ki, digər elektron cədvəl redaktorları da bunu edəcək.

Buna görə də, MySQL verilənlər bazasını csv fayllarına ixrac edərkən, redaktorlar tərəfindən qəbul edilən xüsusi simvollarla məlumatları ayıraraq bunu etməlisiniz.

Və burada MySQL məlumatlarını csv və xls-ə ixrac etməyin ikinci yoluna, yəni MySQL əmr satırından istifadə etməyə rəvan yaxınlaşdım.

Beləliklə, MySQL məlumatlarını bu şəkildə csv faylına ixrac etmək üçün bizə aşağıdakı əmr lazımdır:

* SEÇİN verilənlər bazası_cədvəlindən OUTFILE "path_and_file_name.csv" SAHƏLƏRİ "," TARAFINDAN XİTAM EDİLƏN """ SƏTİRLƏR İLƏ QAPADA "\n";

Onun icrası nəticəsində siz ona zəng edərkən göstərdiyiniz yolda csv faylı alacaqsınız və bu fayl əksər müasir elektron cədvəl redaktorlarında düzgün açılacaqdır. Hər halda qaçmağı xatırladıram əmr verilmişdir yalnız MySQL verilənlər bazasına qoşulduqdan sonra lazımdır.

Bu əmr həm də Microsoft Office Excel-də düzgün göstərilmək üçün MySQL məlumatlarını xls faylına ixrac etmək üçün əladır. Yalnız bu halda, ayırıcılara ehtiyacımız yoxdur, çünki məlumatın hüceyrələrə parçalanmasına müdaxilə edəcəklər:

SEÇİN * verilənlər bazası_cədvəlindən OUTFILE "path_and_file_name.xls";

Ancaq praktikada hər şey təsvir etdiyim qədər sadə deyil. Komandanın icrası zamanı konsolda ixracın tamamlanmasına mane olan aşağıdakı xəta ilə qarşılaşa bilərsiniz:

XƏTƏ 1290 (HY000): MySQL server --secure-file-priv seçimi ilə işləyir, ona görə də bu bəyanatı yerinə yetirə bilmir

Buna səbəb MySQL serverinizin seçimlə işə salınmasıdır --secure-file-priv. Şəxsən mən bu problemlə konsolda işləmək üçün WAMP OpenServer dəstinə daxil olan MySQL paylama dəstindən istifadə etdiyim üçün qarşılaşdım, bu da öz növbəsində MySQL serverini bu şəkildə işə salır.

Burada problemi həll etməyin iki yolu var:

  • MySQL serverinin başlanğıc seçimlərini dəyişdirin
  • Təyinat MySQL ixrac faylının yolunu dəyişdirin

Birinci üsul mənə çox mürəkkəb göründü, çünki. Bütün sonrakı şərtlərlə mənim tərəfimdən yazılmayan OpenServer konfiqurasiyasını qazmalı olardım 🙂 Buna görə də ikinci yola getməyə qərar verdim. Bənzər bir problemlə qarşılaşsanız, məndən sonra təkrarlayın.

Əvvəlcə MySQL komanda xəttinə keçməli və aşağıdakı əmrlərdən birini yerinə yetirməlisiniz:

"secure_file_priv" KİMİ DƏYƏNİŞLƏRİ GÖSTƏRİN; SEÇİN @@GLOBAL.secure_file_priv;

Hər ikisinin icrasının nəticəsi MySQL qlobal dəyişənin dəyəri olacaq təhlükəsiz_fayl_priv, MySQL məlumatlarının ixracı və idxalı əməliyyatlarının həyata keçirilə biləcəyi qovluğa gedən yolu ehtiva edir (gələcəkdə məlumatların idxalı ilə bağlı məqaləyə keçid).

Bunlar. əmrlərdən istifadə edərkən DATA YÜKLƏSEÇİN … OUTFILE ixrac və idxal edilmiş fayllar yalnız bu qovluqda yerləşdirilə bilər.

Mənim vəziyyətimdə bu dəyişənin ümumiyyətlə müəyyən edilmiş dəyəri var idi SIFIR, çünki Mən, artıq dediyim kimi, konsolda işləmək üçün OpenServer-ə daxil olan paylamadan MySQL utilitlərindən istifadə edirəm. Verilmiş dəyər MySQL məlumat ixracı və idxal əməliyyatlarının göstərilən əmrlərdən istifadə edərək tamamilə bağlandığını göstərdi.

Sonradan məlum olduğu kimi, bu, qutulu WAMP və MAMP serverlərindən istifadə halında ümumi vəziyyətdir.

Təəssüf ki, mənim vəziyyətimdə MySQL qlobal dəyişənlərinin dəyərlərini dəyişdirmək üçün adi üsullardan istifadə etmək mümkün olmadı:

SET dəyişən_adı = dəyər;

Nəticədə konsolda yalnız aşağıdakı səhvi gördüm:

1-ci sətirdə XƏTƏ 1238 (HY000): "secure_file_priv" dəyişəni yalnız oxunan dəyişəndir.

Nəhayət, dəyişənin dəyərini dəyişdirmək üçün təhlükəsiz_fayl_priv və ixrac və idxal əməliyyatlarını açmaq üçün MySQL paylanmasının kök qovluğunda yerləşən mysql.ini MySQL konfiqurasiya faylına daxil olmaq lazım idi və ya MySQL WAMP/LAMP/ ilə birlikdə olarsa, başqa yolla əldə edilə bilər. MAMP server quruluşu.

Yeri gəlmişkən, fayl mübadiləsi bufer qovluğuna gedən yolu dəyişdirmək istəyirsinizsə, eyni şeyi etməlisiniz.

Mənim vəziyyətimdə bu dəyişən konfiqurasiyada artıq mövcud idi, yalnız şərh edilmiş formada:

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

Əgər sizdə yoxdursa, o zaman bölməyə sıfırdan yazın (heç olmasa, orada yerləşir).

Mən onu şərhdən çıxardım və yazıldığı formada istifadə etmək qərarına gəldim. Bunlar. MySQL-dən məlumatları ixrac edərkən və onları geri idxal edərkən, mənim fayllarım indi kataloqda saxlanacaq c:\openserver\userdata\temp\.

Dəyişikliklərin qüvvəyə minməsi üçün konfiqurasiyanı dəyişdirdikdən sonra (yeri gəlmişkən, hər hansı) serverinizi və ya parametrlərini düzəltdiyiniz ayrı bir xidməti yenidən başlatmağı unutmayın!

Əmin olmaq üçün MySQL serverini yenidən işə saldıqdan sonra dəyişəni yenidən göstərin təhlükəsiz_fayl_priv və onun dəyərini panoya kopyalayın.

İndi əmri çağırmalıyıq, başlanğıcda olduğu kimi, yalnız MySQL verilənlər bazasından məlumatların saxlanacağı faylın adından əvvəl dəyişdirdiyimiz dəyişəndə ​​saxlanılan yolu aşağıdakı formada yazın:

SEÇİN * verilənlər bazası_cədvəlindən OUTFILE "value_secure_file_priv\file_name.csv";

Bundan sonra MySQL-dən məlumatların ixracı mənim vəziyyətimdə işlədi.

Vacib məqam! Əgər siz Windows altında MySQL ilə işləyirsinizsə, faylın yolunu göstərərkən "\"-ni "/" kimi dəyişməyi unutmayın, əks halda səhv --secure-file-priv hər halda özünü göstərməyə davam edəcək.

MySQL verilənlər bazasını və onun cədvəllərini necə boşaltmaq, həmçinin MySQL cədvəllərindən müxtəlif formatlara məlumat çıxarmaq haqqında bu məqalə sona çatır. Rəyinizi şərhlərdə yazın və praktikada ən çox istifadə etdiyiniz bütün skript seçimlərinizlə paylaşın.

Məqaləni bəyəndinizsə, məqaləni yenidən yerləşdirərək müəllifə təşəkkür edə bilərsiniz sosial Mediya və ya aşağıdakı formadan istifadə edərək, əsas hostinq üçün ödəniş edə biləsiniz.

Hər kəsə uğurlar və tezliklə görüşərik! 🙂

P.S.: vebsayta ehtiyacınız varsa və ya mövcud vebsaytda dəyişiklik etmək lazımdırsa, lakin bunun üçün vaxt və istək yoxdursa, xidmətlərimi təklif edə bilərəm.

5 ildən artıq təcrübə peşəkar veb sayt inkişafı. ilə işləyin PHP

Məndən tez-tez soruşurlar ki, böyük MySQL verilənlər bazası serverə necə idxal oluna bilər. Məlumdur ki, standart olaraq phpMyAdmin idxal edilən verilənlər bazası ölçüsündə məhdudiyyətlərə malikdir.

Əgər zibiliniz icazə verilən həddi çox keçmirsə, onu bir neçə hissəyə bölə və bir neçə keçidlə idxal edə bilərsiniz. Bu, məsələn, limit 2Mb və verilənlər bazanız 5-10Mb ölçüsündə olduqda haqlıdır. Aydındır ki, 100MB verilənlər bazasını 50 hissəyə “kəsmək” vaxt resursları baxımından kifayət qədər vaxt aparan və baha başa gələn prosesdir.

Bu problemi həll etmək üçün bir neçə variant var.

Veb server konfiqurasiyasının redaktə edilməsi

VDS / VPS-də bununla bağlı heç bir xüsusi problem yoxdur, sadəcə konfiqurasiyanı düzəltmək lazımdır. Məhz, php.ini-də serverə yüklənmiş fayllar üçün icazə verilən maksimum dəyərləri, POST metodu ilə ötürülən fayllar üçün maksimum ölçüsü artırın:

Post_max_size = 2000M upload_max_filesize = 2000M

Bundan əlavə, verilənlər bazanız çox böyükdürsə, icazə verilən maksimum skriptin icra müddətini artırmalısınız.

max_icra_time = 32000 max_input_time = 32000

Və hər halda, icazə verilən RAM miqdarının ölçüsünü artıra bilərsiniz:

yaddaş limiti = 512M

Dəyişikliklər etdikdən sonra veb serveri yenidən başlatdığınızdan əmin olun.

Bu metodun uyğun olmadığı aydındır virtual hosting, çünki konfiqurasiyaları redaktə etmək qabiliyyətini ifadə etmir.

Sypex Dumper

Üçüncü tərəf proqramlarından istifadə edə bilərsiniz. Diqqət yetirməyə dəyər ilk proqram Sypex Dumper-dir.

Onu ilk dəfə uzun illər əvvəl istifadə edərək və onun bütün imkanlarını və üstünlüklərini qiymətləndirərək, mən onu təhlükəsiz olaraq “Olmalıdır” adlandıra bilərəm. Sypex Dumper quraşdırma tələb etməyən PHP server proqramıdır. Onu, məsələn, sxd qovluğunda saytınızın kökünə köçürmək və brauzerdə ona zəng etmək kifayətdir: http://Your_Site/sxd/. Qeyd etmək lazımdır ki, əvvəlcə verilənlər bazanızın zibilini ehtiyat qovluğuna yerləşdirməlisiniz. Skript işə salındıqdan sonra verilənlər bazasına qoşulmaq üçün avtorizasiya panelini görəcəksiniz. Giriş və şifrənizi daxil edin. Host və port yalnız spesifik olduqda isteğe bağlıdır.

Avtorizasiyadan sonra siz birbaşa verilənlər bazasının idxalına keçə bilərsiniz. Sahədə "Məlumat bazası" bağlı olduğunuz verilənlər bazası seçiləcək və sahədə "Fayl" siz əvvəllər Yedəkləmə qovluğuna yüklədiyiniz dumpı görəcəksiniz.

Əksər hallarda, heç biri əlavə parametrlər artıq lazım deyil və siz "Çalış" düyməsini klikləməklə təhlükəsiz şəkildə idxala başlaya bilərsiniz. Verilənlər bazasının ölçüsündən və İnternet bağlantınızın sürətindən asılı olaraq idxal bir qədər vaxt apara bilər. İdxal zamanı hazırda verilənlər bazasına hansı cədvəllərin idxal edildiyini görə bilərsiniz. Skript tamamlandıqdan sonra icra jurnalını görəcəksiniz. Bu kimi bir şey görünür:

Əslində, hamısı budur - verilənlər bazası idxal olunur!

Konsol

Konsol vasitəsilə idxal nəzərə alınmayacaq. Düşünürəm ki, konsolu mənsiz istifadə edən insanlar istənilən verilənlər bazasını necə idxal etməyi bilirlər. Xüsusi təhsili olmayan adi istifadəçilərin oraya qarışmaması daha yaxşıdır. Bəzi əmrlərin yerinə yetirilməsi ciddi nəticələrə səbəb ola biləcəyi üçün, tam server qəzasına qədər.

Nəhayət

Sydex Dumper-in yeganə və düzgün həll olduğunu söyləməyi güman etmirəm. İstifadəçidən müəyyən biliyə və server parametrlərinə müvafiq girişə malik olmasını tələb edən daha zərif üsullar da var.

Ancaq paylaşılan hosting mühitində Sydex Dumper sizin əvəzsiz köməkçiniz olacaq.

Teleqramıma abunə olun və saytda olmayanlar da daxil olmaqla yeni materialları ilk əldə edən siz olun.

Əksər saytlarda verilənlər bazası (və ya qısaca DB) bir neçə onlarla Mb (meqabayta) bərabər ölçüyə (çəki) malikdir. Müxtəlif layihələrin başlanğıcında verilənlər bazasının ilkin ölçüsü saytın özünün (CMS) strukturundan asılıdır, lakin sonra hər yeni girişlə onların çəkisi artır.

Qeydlər istifadəçi qeydiyyatı məlumatları, şərhlər, şəxsi mesajlar, məhsullar, xəbərlər və sayt bazasında saxlanılan digər məlumatlar ola bilər.

Verilənlər bazalarının ölçüsü 500 MB (meqabayt), bəzilərində isə hətta 2 GB (giqabayt)-a çatan bir neçə saytla işləmək şansım oldu. Bu ölçülü verilənlər bazalarını standart metodlardan istifadə etməklə (hostinq və brauzer məhdudiyyətlərinə görə) köçürmək çətin olduğundan, mən sizinlə bu cür vəzifələrin həllində (böyük verilənlər bazalarının miqrasiyası) kömək edəcək bir neçə iş metodunu paylaşacağam.

Sypex Dumper vasitəsilə böyük MySQL verilənlər bazalarının ixracı (endirilməsi).

Beləliklə, sizinlə daha asan bir seçimlə, yəni hazır həll yolu ilə qarşıya qoyulan vəzifələrin həllinə baxmağa başlayaq.

"Sypex Dumper" PHP-də yazılmış proqram məhsuludur və phpMyAdmin istifadə etmədən verilənlər bazası ilə işləməyə imkan verir. "Sypex Dumper"-in üstünlüklərinə aşağıdakılar daxildir:

  1. Çoxdilli (çox dilləri dəstəkləyir).
  2. Skriptin pulsuz bir versiyası var (bu, tapşırıqlarımız üçün kifayətdir).
  3. Tapşırığın icrasının yüksək sürəti.
  4. Böyük verilənlər bazası ilə işləmək.
  5. Rahat və aydın interfeys.
  6. Və bir çox digər maraqlı "çiplər".

Biz onlardan böyük verilənlər bazalarını yükləmək (köçürmək) üçün istifadə edəcəyik.

Xüsusi saytınızın verilənlər bazasını sonrakı istifadə üçün ixrac etmək (almaq, yükləmək) üçün aşağıdakıları etməlisiniz.

1. saytımızdan pulsuz.

2. sxd sizin üçün əlverişli bir şəkildə.

3. Sonra, gedin (Harada your_site.com İçəri girmək».

4. Açılan səhifədə (uğurlu avtorizasiya ilə) bölməyə 1 dəfə klikləyin " İxrac» yuxarı menyuda. İstifadəçi üçün bir neçə verilənlər bazası varsa, açılan siyahıdan ixrac edəcəyimiz (yükləyəcəyimiz) birini seçin. Qalan parametrlər dəyişməz qala bilər və " üzərinə klikləyin. Qaç».


qeyd etmək istəyirəm bütün verilənlər bazasını ixrac edə bilməzsiniz, ancaq zəruri hallarda yalnız bəzi cədvəlləri.

5. Verilənlər bazasının saxlanması prosesi başa çatdıqdan sonra (bunu tərəqqi çubuğundan başa düşə bilərsiniz), müvafiq düyməni sıxaraq sizə lazım olan verilənlər bazasını yükləyə bilərsiniz.


Bundan əlavə, bütün ixrac verilənlər bazaları yol boyu saytınızda saxlanılacaq. /sxd/backup/. Verilənlər bazasını saxlamaq uğursuz olarsa, qovluğu yoxlayın ehtiyat nüsxəsi yazma icazələri 777-dir.

Bu, verilənlər bazasının ixracını (endirilməsini) tamamlayır.

Sypex Dumper vasitəsilə böyük MySQL verilənlər bazalarının idxalı (yüklənməsi).

Yuxarıda, biz sizinlə lazımi məlumat bazasını əldə etməyin yolunu müzakirə etdik, indi onu başqa bir layihəyə köçürməlisiniz (import etməlisiniz) və bunun üçün aşağıdakıları edirik.

1. saytımızdan pulsuz.

2. Arxivi açın və qovluğu sayta yükləyin sxd sizin üçün əlverişli bir şəkildə.

3. Qovluğa /sxd/backup/əvvəllər əldə edilmiş (yüklənmiş) verilənlər bazasını yükləyin.

4. Sonrakı gedin http://your_site.ru/sxd/index.php(Harada your_site.com– saytınızın domeni), bundan sonra qarşınızda məlumat daxil etmək üçün bir forma açılacaqdır. Orada, sizə lazım olan verilənlər bazasını idarə etmək hüququ olan istifadəçinin məlumatlarını təyin edirsiniz və " İçəri girmək».

5. Açılan səhifədə (uğurlu avtorizasiya ilə) bölməyə 1 dəfə klikləyin " İdxal» yuxarı menyuda. İstifadəçi üçün bir neçə verilənlər bazası varsa, açılan siyahıdan məlumatları idxal edəcəyimiz (yükləyəcəyimiz) birini seçin. Qalan parametrlər dəyişməz qala bilər və " Qaç».


qeyd etmək istəyirəm bütün verilənlər bazasını deyil, lazım olduqda yalnız bəzi cədvəllərini idxal edə bilərsiniz.

6. Verilənlər bazasının idxalı (yüklənməsi) prosesi başa çatdıqdan sonra (bunu tərəqqi çubuğundan başa düşə bilərsiniz) tapşırığı tamamlanmış hesab etmək olar.


SSH terminalı vasitəsilə böyük MySQL verilənlər bazalarının ixracı (endirilməsi).

SSH sizə uzaqdan (vasitəsilə) imkan verən şəbəkə protokoludur xüsusi əmrlər) sistemi və ya serveri idarə etmək. Windows-da bu protokolla işləmək üçün çoxlu proqramlar var, onlardan ən populyarı PuTTY-dir.

Bəzi hostinqlərdə, məsələn, idarəetmə panelində quraşdırılmış Terminal var. Uzağa getməyəcəyik və onun nümunəsindən istifadə edərək başlıqda təsvir olunan tapşırığı nəzərdən keçirəcəyik. Qeyd etməyə dəyər ki, aşağıda təsvir edilən əməliyyatlar ayrıca SSH müştərisində də edilə bilər.

1. Terminalı işə salırıq. Üzərində belə görünür:


2. Üçüncü tərəf proqramı vasitəsilə serverə qoşulursanız, müvafiq məlumatları daxil etməklə ona daxil olun (onları hosting idarəetmə panelində və ya hostinq provayderinizdən əldə edə bilərsiniz).

ikinci- Bu:

mysqldump -u İSTİFADƏÇİ ADI -p DATABASE > backup.sql

birbaşa ixracın özü, burada:

USERNAME– verilənlər bazasına girişi olan istifadəçinin girişi.

MƏLUMAT BAZASI– ixrac etmək istədiyimiz verilənlər bazasının adı.

backup.sql– verilənlər bazasının saxlanacağı faylın adı və -yə nisbətən yol. Bu dizaynla verilənlər bazası hostinq kökündə saxlanılacaq.

4. üçüncü addımdaDaxil edin"klaviaturada. Qeyd

Server yenidən SSH vasitəsilə əmrləri qəbul etməyə hazır olduqdan sonra bu, verilənlər bazası ixracının tamamlandığını və onu FTP vasitəsilə və ya hosting fayl meneceri vasitəsilə yükləyə bilərsiniz.

SSH-ə ixrac (və idxal) prosesi yayımlanmır və verilənlər bazanız kifayət qədər böyükdürsə, səbirli olun, çünki 20 dəqiqədən çox müddət sonra serverdən cavab ala bilərsiniz.

SSH terminalı vasitəsilə böyük MySQL verilənlər bazalarının idxalı (yüklənməsi).

SSH nədir, yuxarıda artıq öyrəndik və indi əvvəllər yüklənmiş verilənlər bazasını başqa bir layihəyə necə idxal edəcəyimizi düşünməyə başlayacağıq.

1. sənin kökündə hosting, əvvəllər yüklənmiş verilənlər bazasını sizin üçün əlverişli şəkildə endirin.

2. SSH vasitəsilə hostinq/serverinizə qoşulun.

buna görə də biz mütləq hosting kökünə gedirik və ikinci- Bu:

Beləliklə, cari qovluqdakı faylların və qovluqların tam siyahısını əldə edirik. Biz əvvəllər yüklənmiş verilənlər bazamızı daxil etməyə çalışırıq.

4. Hər şey qaydasındadırsa və baza yerindədirsə, son əmri daxil edin:

mysql -u İSTİFADƏÇİ ADI -p MƏLUMAT BAZASI< backup.sql

USERNAME– verilənlər bazasına girişi olan istifadəçinin girişi.

MƏLUMAT BAZASI– məlumatları idxal edəcəyimiz verilənlər bazasının adı.

backup.sql- yüklənəcək faylın adı və ilə bağlı yol. Bu dizaynla verilənlər bazası hostinq kökündən idxal ediləcək.

5. Komandanı daxil etdikdən sonra sizdən qeyd etdiyiniz istifadəçinin parolunu daxil etməyiniz xahiş olunacaq dördüncü addımda. Şifrənizi daxil edin və "klikləyin" Daxil edin"klaviaturada. Qeyd SSH terminalında parol girişinin göstərilməməsi, yəni parolu daxil etdiyiniz və ya yapışdırdığınız - onun yerində həmişə boş yer olacaq.

Bundan sonra, server yenidən SSH vasitəsilə əmrləri qəbul etməyə hazır olduqda, bu, verilənlər bazası idxalının tamamlandığını və layihə üzərində işləməyə davam edə biləcəyinizi ifadə edəcəkdir.

Gününüz xeyir, həmkarlar 🙂

Bu gün sizi MySQL konsolunda və MySQL komanda xəttində MySQL ilə işləmək ilə tanış etməyə davam edəcəyəm.

Mən artıq konsol vasitəsilə MySQL verilənləri ilə əsas hərəkətləri necə yerinə yetirmək və MySQL verilənlər bazasının ehtiyat nüsxəsini çıxarmaq, eləcə də orada saxlanılan məlumatların ixracı haqqında məqalələr yazmışam.

Bu hekayənin məntiqi davamı MySQL verilənlər bazası idxal əməliyyatlarından istifadə edərək verilənlər bazası və orada saxlanılan məlumatların bərpası olacaq. Və ən əsası, biz bunu bütün sərt tərtibatçıların aləti ilə - konsol vasitəsilə etməyə davam edəcəyik.

Əgər phpMyAdmin vasitəsilə verilənlər bazasını idxal etmək üçün təlimatlara ehtiyacınız varsa, onu haqqında məqalədə tapa bilərsiniz. Hazırkı məqalədə mən bunu bir daha təsvir etməyə həvəsli deyiləm, xüsusən də bugünkü material yalnız MySQL verilənlər bazasını konsol vasitəsilə idxal etməyə həsr olunacaq.

Ancaq yolları və vasitələri nəzərdən keçirməyə başlamazdan əvvəl, MySQL verilənlər bazası idxalı nədir, bu necədir və bunu etməyin ən yaxşı yolu nədir haqqında bir neçə kəlmə?

MySQL verilənlər bazasının idxalı: nə və niyə?

MySQL verilənlər bazasının idxalı verilənlər bazasını məlumatla dolduran bir əməliyyatdır. Bu halda, məlumat mənbəyi bir dump faylıdır - ixrac əməliyyatı zamanı avtomatik olaraq yaradılan başqa bir verilənlər bazası və ya xüsusi hazırlanmış SQL skriptidir.

MySQL verilənlər bazasının idxalı və ixracı ilə yanaşı verilənlər bazasında iki növ məlumat saxlanılır:

  1. verilənlər bazasının strukturu, onun cədvəlləri və onlarda saxlanılan verilənlər (dil dilində verilənlər bazası zibilliyi adlanır);
  2. yalnız cədvəldə saxlanılan və ya istifadə edərək toplanan məlumatlar SEÇİN istək.

Bu məqalə hər iki variantı əhatə edəcəkdir.

MySQL zibilindən verilənlər bazasını strukturu və bütün saxlanılan məlumatları ilə bərpa etmək üçün, artıq qeyd edildiyi kimi, hər hansı bir uzantılı mətn faylı olan verilənlər bazası dump faylına ehtiyacınız var (ölçüsü azaltmaq üçün əvvəlcə arxivə yığıla bilər), verilənlər bazasının özünü və cədvəllərini yaratmaq, həmçinin onları informasiya ilə doldurmaq üçün SQL əmrlərini ehtiva edir.

Buna görə də, MySQL verilənlər bazasını zibildən bərpa etmək üçün faylda olan əmrləri yerinə yetirməlisiniz.

Normal məlumatların bərpası üçün belə mürəkkəbliklər lazım deyil. Məlumat bazası cədvəlində olduğu kimi strukturlaşdırılacaq bir test faylının olması kifayətdir: məlumatı olan sütunların sayı cədvələ giriş atributlarının sayına uyğundur.

Bu məqsədlər üçün adi txt faylı, bölünəcək verilənlər və ya fərqli genişlənməyə malik olan xüsusi cədvəl redaktorlarında (Microsoft Office Excel, OpenOffice və s.) yaradılmış fayllar: xls, csv, odt və s.

Bu formatlara hətta üstünlük verilir, çünki. onlar yaradıldıqda redaktorlar tərəfindən verilənlərin məhdudlaşdırıcıları avtomatik olaraq əlavə edilir və adi mətn faylında olduğu kimi onları ayrıca daxil etməyə ehtiyac yoxdur.

MySQL-ə məlumatların əlavə edilməsi: Alətlər

MySQL verilənlər bazası idxal alətlərinə gəldikdə, deyə bilərəm ki, bu gün onlardan üçü var.

Onları ən aşağı səviyyədən başlayaraq, ən yüksək səviyyəyə qədər (hər növ qabıq və əlavələrdən istifadə baxımından) sadalayacağam:

  1. Server konsolu və MySQL komanda xətti;
  2. Dil alətlərindən istifadə edərək MySQL-ə məlumat yazmağa imkan verən proqramlaşdırma dillərində yazılmış skriptlər;
  3. Verilənlər bazası ilə işləmək üçün vizual interfeys təmin edən hazır proqramlar (eyni phpMyAdmin, MySQL WorkBench, MySQL Manager və s.).

Düşünürəm ki, alətlərin sırası heç bir sual yaratmayacaq, çünki. proqramlaşdırma dili alətləri, bir qayda olaraq, MySQL konsol əmrləri əsasında işləyir, proqramlar isə skriptlərə əsaslanır və ya birbaşa MySQL komanda xətti ilə işləyir.

Bu və ya digər şəkildə, konsol hər şeyin başındadır və qalan alətlər, əslində, onun emulyatorlarıdır.

Buna görə də, MySQL-ə məlumat idxal edərkən konsoldan istifadə etmək, veb serverdəki proqramlaşdırma dillərinin parametrləri və proqramların özləri (yeri gəlmişkən, həmişə dəyişdirilə bilməz) tərəfindən təyin olunan müxtəlif növ məhdudiyyətləri keçməyə imkan verir.

Bunun sayəsində MySQL verilənlər bazasını konsol vasitəsilə doldurmaq nəinki daha sürətli ola bilər, həm də bu əməliyyatı prinsipcə mümkün edə bilər, çünki skriptlər və proqramlar maksimum skriptin icra müddətinə çatdıqda idxalı dayandırmağa və ya yüklənmiş faylın ölçüsünə görə ümumiyyətlə başlamamağa meyllidirlər.

Düşünürəm ki, phpMyAdmin-dən istifadə edərək böyük MySQL verilənlər bazasına zibil yükləməyə cəhd edən hər kəs nə haqqında danışdığımı başa düşür.

Çox vaxt bu məhdudiyyətlər MySQL verilənlər bazasını idxal edərkən, konsoldan istifadə edərkən heç vaxt görməyəcəyiniz səhvlərin səbəbi olur.

Əlbəttə ki, onlar sabit deyil və dəyişdirilə bilər, lakin bu, yeri gəlmişkən, adi istifadəçilər üçün həll edilə bilməyən əlavə bir baş ağrısıdır.

Ümid edirəm ki, mən sizi MySQL verilənlər bazasını konsol vasitəsilə idxal etməyə sövq etdim (üstəlik, həm onun strukturu, həm də ayrı-ayrı məlumatlar).

Və bu müsbət qeyddə biz çoxdan gözlənilən təcrübəyə keçirik və məlumatların konsolda verilənlər bazasına ötürülməsi üsullarını və əmrlərini nəzərdən keçiririk.

Konsoldan istifadə edərək MySQL verilənlər bazasını zibildən necə bərpa etmək olar?

Beləliklə, MySQL zibilini konsoldan yerləşdirmək üçün iki yol var:

  1. MySQL komanda xəttində bir əmrdən istifadə etməklə;
  2. server konsolunun özündə.

Sıra ilə başlayaq.

Beləliklə, MySQL verilənlər bazası zibilini vasitəsilə mövcud depoya idxal etmək üçün əvvəlcə onu işə salmalı və zibilimizi yükləyəcəyimiz istədiyiniz verilənlər bazasını seçməliyik.

Bu hərəkətlərin həyata keçirilməsi yuxarıdakı linkdəki məqalədə ətraflı təsvir edilmişdir, buna görə də onların təsvirinə ehtiyacınız varsa, onu oradan götürün, çünki. İkinci turda onları təkrarlamaq istəmirəm.

Yuxarıdakıları etdikdən sonra MySQL Shell-də aşağıdakı əmri daxil edin:

Mənbə yolu_və_dump_faylının adı;

Bizim üçün qalan şey, zibil qutusunda olan əməliyyatların gedişatı haqqında konsoldakı mesajları öyrənməkdir.

Əvvəlcə istədiyiniz verilənlər bazasına keçmədən, konsolda MySQL serverinə qoşulduqdan sonra dump aşağıdakı əmrlə idxal edilə bilər:

Mysql -u istifadəçi adı -p verilənlər bazası_adı< путь_и_имя_файла_дампа

Hamısı budur. Əsas odur ki, fayl çox böyükdürsə, idxalın bitməsini gözləməkdir. Zibilin tamamlanmasını server konsolunun nə vaxt yenidən əlçatan olacağı ilə qiymətləndirmək olar.

Düzünü desək, bu, əvvəlki ilə müqayisədə bu metodun dezavantajıdır, tk. birincisində idxal zamanı verilənlər bazasında aparılan əməliyyatları müşahidə etmək olar, ikincisində isə yox.

Əgər zibil faylı arxivə yığılıbsa, endirərkən onu yol boyu çıxartmalısınız.

Linux-da bu belə edilə bilər:

Gunzip > [archive_filename.sql.gz] | mysql -u -p

Windows-da standart kommunal konsolda arxivi açmaq mümkün deyil, ona görə də əlavə olaraq quraşdırmaq lazımdır.

Gördüyünüz kimi, konsol vasitəsilə MySQL zibilinin idxalı tək bir əmrlə yerinə yetirilə bilən çox sadə bir əməliyyatdır. Beləliklə, bu proseduru yerinə yetirmək üçün tərtibatçı olmaq lazım deyil.

Birdən server konsolunu necə işə salacağınızı bilmirsinizsə, onda bu məlumatı MySQL əmr satırındakı məqalədə, əvvəllər əldə etdiyim linkdə tapa bilərsiniz.

Yeri gəlmişkən, təsvir olunan üsullardan istifadə edərək, bütün verilənlər bazasını deyil, MySQL cədvəlini idxal etmək də mümkündür. Bu halda, yüklədiyiniz zibil onun yaradılması və məlumatlarla doldurulması əməliyyatlarını ehtiva etməlidir.

Konsoldakı fayldan MySQL verilənlər bazasına verilənlərin yüklənməsi

Konsoldakı zibildən MySQL verilənlər bazasını bərpa etmək haqqında danışdıq. İndi xls və csv-dən MySQL verilənlər bazasına daxil olmaqla, eyni şəkildə fayllardan məlumatları necə idxal edə biləcəyinizi anlamağın vaxtıdır.

Bu tapşırığı yerinə yetirmək üçün yenə əvvəlki vəziyyətdə olduğu kimi eyni iki alətimiz var: MySQL komanda xətti və server konsolu.

Sıra ilə yenidən nəzərdən keçirməyə başlayaq.

Beləliklə, MySQL əmr satırında bir faylı idxal etmək üçün onu yenidən işə salırıq və məlumatların yüklənəcəyi verilənlər bazasına keçirik.

MƏLUMAT INFILE "path_and_dump_file_name" CƏDVƏL `verilənlər bazası_cədvəli` SÜTUNLARI YÜKLƏYİN, "" İSTƏNİLƏN "\"" SƏTİRLƏRİ "\n" TARAFINDAN SON VERİLƏN;

Unutmayın ki, əgər MySQL serveri seçimlə işə salınıbsa --secure-file-priv(bu, tez-tez WAMP / MAMP quruluşlarına daxil olan MySQL paylamalarından istifadə edərkən baş verir), sonra fayl adı sistem dəyişəni nəzərə alınmaqla göstərilməlidir. təhlükəsiz_fayl_priv.

MySQL Shell-ə ​​daxil olmadan MySQL verilənlər bazasını server konsoluna idxal etmək üçün bizə yardımçı proqram lazımdır. mysqlimport MySQL paylanmasının bir hissəsi olan , və ona aşağıdakı çağırış:

mysqlimport -u istifadəçi adı -p verilənlər bazası_adı_və_import_faylının_yolu

Bu yardım proqramı SQL əmrinin analoqudur DATA INFILE YÜKLƏYİN, yalnız komanda xətti. Bəs görəsən niyə onun çağırışının parametrləri arasında fayldan verilənlərin yüklənəcəyi cədvəl göstərilmir?

Fakt budur ki, mysqlimport sadəcə fiziki olaraq yoxdur verilmiş parametr. Bunun əvəzinə verilənlərin yüklənəcəyi cədvəlin adı idxal olunan faylın adında olmalıdır.

Bunlar. excel cədvəlindən mysql cədvəlinə idxal etmək istəyirsinizsə istifadəçilər, sonra faylınız adlandırılmalıdır users.xls.

İdxal edilmiş faylın uzantısı, artıq qeyd edildiyi kimi, hər hansı bir ola bilər.

Mysqlimport ilə eyni anda bir neçə xls və ya csv faylını MySQL-ə yükləmək də mümkündür. Verilənlərin təyinat yerinə çatması üçün əvvəlki nümunədə olduğu kimi verilənlər bazasının fayl və cədvəllərinin adları da uyğun olmalıdır.

Birdən idxal edilmiş fayldakı sütunlar verilənlər bazası cədvəlinin sütunları ilə eyni ardıcıllıqla deyilsə, onların sırasını aydınlaşdırmaq üçün aşağıdakı formada --columns seçimini istifadə etməlisiniz:

Mysqlimport -u istifadəçi adı -p verilənlər bazası_adı --sütunlar sütun1, sütun2, ... idxal_fayl_adı və_yol

Təbii ki, nümunələrimdə mysqlimport parametrlərinin tam siyahısını nəzərə almadım, çünki onlardan bəziləri çox spesifikdir və praktikada nadir hallarda istifadə olunur.

Əgər onlarla tanış olmaq istəyirsinizsə, onların tam siyahısı burada mövcuddur - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

Zibildən MySQL verilənlər bazasına verilənlərin yüklənməsi xüsusiyyətləri

Böyük MySQL verilənlər bazasının idxalı prosesinin daha sürətli olmasını istəyirsinizsə, o zaman MySQL verilənlər bazasının ixracı ilə bağlı əvvəlki məqaləmdə yazdığım mysqldump əmrinin xüsusi variantlarından istifadə edərək verilənlər bazası zibilini yaratmalısınız. mətndə daha əvvəl yerləşdirilmişdir.

Təəssüf ki, MySQL verilənlər bazası idxal əmrlərinin özlərində belə seçimlər yoxdur.

Yeganə şey, böyük bir verilənlər bazası zibilini yükləyərkən sürəti artırmaqdır, aşağıdakı xüsusiyyətdən istifadə edə bilərsiniz.

1. Dump faylını açın (tercihen fayl menecerləri, çünki adi redaktorlar sadəcə böyük fayllardan ölə bilər).

2. Faylın əvvəlinə aşağıdakı sətirləri yazırıq:

Xarici_açar_çeklerini SET = 0; UNIQUE_CHECKS SET = 0; AUTOCOMMIT SET = 0;

Qeyd! Ola bilsin ki, onlar artıq oradadırlar və ya şərh ediblər (zibilləri yaradan bir çox proqram onları avtomatik olaraq əlavə edə bilər)

3. Faylın sonunda əks hərəkətləri yazın:

Xarici_açar_çeklerini SET = 1; UNIQUE_CHECKS SET = 1; AUTOCOMMIT SET = 1;

Yeri gəlmişkən, bu əmrlər yalnız idxal prosesini sürətləndirməyə kömək edəcək, həm də onu mümkün edəcəkdir.

Fakt budur ki, əgər siz MySQL verilənlər bazasını idxal etmək üçün nə vaxtsa dump faylına baxmısınızsa, yüklənmiş cədvəllərin strukturunun qurulması əməliyyatının belə göründüyünü fərq etmiş ola bilərsiniz:

`müştərilər' VARSA CƏDVƏLƏ DÜŞÜN; CƏDVƏL YARADIN `müştərilər` (...);

Bunlar. verilənlər bazasında idxal edilən ilə eyni adlı cədvəl üçün axtarış aparılır və əgər tapılarsa, silinir və yenidən yaradılır.

Və birdən mövcud bir masa başqalarına xarici açarlarla bağlanarsa, bütün yük uğursuz olacaq.

Buna görə də, xarici açarların və digərlərinin mövcudluğunun yoxlanılmasının dayandırılması da MySQL verilənlər bazası idxal prosesinin uğurla başa çatmasının əla təminatıdır.

MySQL verilənlər bazasına və digər fayllara csv idxalının xüsusiyyətləri

Mətn fayllarından MySQL verilənlər bazasına verilənləri yükləyərkən xarici açarları deaktiv etmək də lazım ola bilər.

Üstəlik, əvvəlki vəziyyətdən fərqli olaraq, bu halda fayla direktivlər yazmaq işləməyəcək, çünki İçindəki SQL əmrləri qəbul edilməyəcək və icra edilməyəcək.

MySQL verilənlər bazasının ixracı ilə bağlı əvvəlki məqalədə mən artıq MySQL komanda xəttində aşağıdakı əməliyyatdan istifadə edərək bunu necə edəcəyimi qeyd etmişdim:

XARİCİ_KEY_CHECKS SET=0;

Ancaq orada MySQL sistem dəyişənini qeyd etməmişəm XARİCİ_KEY_YOXLAMALAR iki mənası var: qlobal və sessiya (cari sessiya üçün).

MySQL dəyişənlərinin qlobal dəyəri MySQL serverində, serverin yenidən işə salınmasına qədər həyata keçirilən hər hansı hərəkət üçün qüvvədədir. Sonra dəyişənlərin dəyərləri sıfırlanacaq və onlara standart dəyərlər təyin ediləcək.

MySQL sistem dəyişəninin sessiya dəyəri yalnız istifadəçinin MySQL serveri ilə sessiyasının müddəti üçün təyin edilir. Müştəri serverə qoşulduqda seans və ya sessiya başlayır, ona unikal təyin olunur əlaqə id, və istənilən vaxt (məsələn, fasilə ilə) baş verə bilən serverdən ayrıldıqda bitir.

Niyə bunu xatırlamağa qərar verdim?

Çünki MySQL Shell-ə ​​daxil olmadan server konsolu vasitəsilə faylı MySQL verilənlər bazasına yükləmək əmrlərini yerinə yetirərkən, əvvəllər təsvir edilmiş şəkildə xarici açarların yoxlanılmasını deaktiv etməyin nəticə vermədiyini gördüm.

Konsol hələ də cədvəldə xarici açarların olması səbəbindən səhv mesajı göstərdi.

Və yuxarıdakı əmrin qlobal olaraq deyil, sessiya daxilində xarici açarların mövcudluğunu yoxlamağı söndürməsi səbəbindən ortaya çıxdı ki, bu da göstərilən üsula əlavə olaraq aşağıdakı kimi edilə bilər:

SET SESSION dəyişən_adı = dəyişən_dəyər; SET @@sessiya.dəyişən_adı = dəyişən_dəyər; SET @@dəyişən_adı = dəyişən_dəyəri;

Yuxarıdakı əmrlərdə dəyişən açıq şəkildə seans dəyişəni kimi qeyd olunur.

Və csv faylını MySQL serverinə birbaşa əlaqə olmadan server konsolu vasitəsilə MySQL cədvəlinə yüklədiyim üçün dəyişənin sessiya dəyərimin işləyəcəyi sessiya yaradılmadı.

FOREIGN_KEY_CHECKS qlobal dəyərini təyin etdim və idxal uğurlu oldu.

Bunu aşağıdakı yollardan biri ilə edə bilərsiniz:

SET QLOBAL dəyişən_adı = dəyişən_dəyər; SET @@qlobal.dəyişən_adı = dəyişən_dəyəri;

Dəyərləri dəyişdirdikdən sonra dəyişikliklərin qüvvəyə mindiyini yoxlamaq üçün dəyişənin dəyərlərini nəzərdən keçirmək artıq olmaz. Sessiyanı və qlobal dəyərləri eyni anda göstərmək üçün aşağıdakı əmrdən istifadə edin:

@@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

Bu, MySQL verilənlər bazasının idxalına dair bugünkü məqaləni yekunlaşdırır. Təəssüratlarınızı və öz təcrübənizi şərhlərdə paylaşın. Düşünürəm ki, çoxları sizin təcrübənizlə maraqlanacaq.

Tezliklə görüşərik! 🙂

P.S.: vebsayta ehtiyacınız varsa və ya mövcud vebsaytda dəyişiklik etmək lazımdırsa, lakin bunun üçün vaxt və istək yoxdursa, xidmətlərimi təklif edə bilərəm.

5 ildən artıq təcrübə peşəkar veb sayt inkişafı. ilə işləyin PHP, açıq araba,