MySQL ma'lumotlarini eksport va import qilish. Ma'lumotlar bazasini eksport qilish, MySQL ma'lumotlar bazasini import qilish. So'rovlar yordamida MySQL ma'lumotlar bazasidan zahira nusxalarini yaratish va ma'lumotlarni olish

Ko'pgina saytlardagi ma'lumotlar bazalari (yoki qisqacha ma'lumotlar bazasi) bir necha o'n Mb (megabayt) ga teng hajmga (og'irlik) ega. Turli loyihalarning boshlanishida ma'lumotlar bazasining boshlang'ich hajmi saytning o'zi (CMS) tuzilishiga bog'liq, ammo keyin ularning vazni har bir yangi kirish bilan ortadi.

Yozuvlar foydalanuvchi ro'yxatga olish ma'lumotlari, sharhlar, shaxsiy xabarlar, mahsulotlar, yangiliklar va sayt ma'lumotlar bazasida saqlanadigan boshqa ma'lumotlar bo'lishi mumkin.

Men bir nechta saytlar bilan ishlash imkoniyatiga ega bo'ldim, ularning ma'lumotlar bazalari hajmi 500 MB (megabayt) dan oshdi va ba'zilarida hatto 2 GB (gigabayt) ga etdi. Ushbu o'lchamdagi ma'lumotlar bazalarini standart usullardan foydalangan holda uzatish qiyin bo'lganligi sababli (xosting va brauzer cheklovlari tufayli), men siz bilan bunday vazifalarni hal qilishda (katta ma'lumotlar bazalarini ko'chirish) yordam beradigan bir nechta ish usullarini baham ko'raman.

Sypex Dumper orqali katta MySQL ma'lumotlar bazalarini eksport qilish (yuklab olish).

Shunday qilib, keling, siz bilan qo'yilgan vazifalarni osonroq variant bilan, ya'ni tayyor yechim bilan hal qilishni ko'rib chiqaylik.

"Sypex Dumper" bu PHP-da yozilgan dasturiy mahsulot bo'lib, phpMyAdmin-dan foydalanmasdan ma'lumotlar bazalari bilan ishlash imkonini beradi. "Sypex Dumper" ning afzalliklari quyidagilardan iborat:

  1. Ko'p tilli (bir nechta tillarni qo'llab-quvvatlaydi).
  2. Skriptning bepul versiyasi mavjud (bu bizning vazifalarimiz uchun etarli).
  3. Vazifani bajarishning yuqori tezligi.
  4. Katta ma'lumotlar bazalari bilan ishlash.
  5. Qulay va aniq interfeys.
  6. Va boshqa ko'plab qiziqarli "chiplar".

Biz ulardan katta ma'lumotlar bazalarini yuklab olish (o'tkazish) uchun foydalanamiz.

Muayyan saytingizning ma'lumotlar bazasini undan keyingi foydalanish uchun eksport qilish (olish, yuklab olish) uchun siz quyidagilarni bajarishingiz kerak.

1. veb-saytimizdan bepul.

2. sxd siz uchun qulay tarzda.

3. Keyingi, o'ting (Qaerda your_site.com Kirish uchun».

4. Ochilgan sahifada (muvaffaqiyatli avtorizatsiya bilan) bo'limda 1 marta bosing " Eksport» yuqori menyuda. Agar foydalanuvchi uchun bir nechta ma'lumotlar bazalari mavjud bo'lsa, ochiladigan ro'yxatdan eksport qiladigan (yuklab olinadigan) birini tanlang. Qolgan sozlamalar o'zgarishsiz qoldirilishi mumkin va "ni bosing. Yugurish».


Men qayd etmoqchiman to'liq ma'lumotlar bazasini eksport qila olmaysiz, lekin agar kerak bo'lsa, faqat uning ba'zi jadvallarini.

5. Ma'lumotlar bazasini saqlash jarayoni tugagandan so'ng (siz buni taraqqiyot satri orqali tushunishingiz mumkin), tegishli tugmani bosish orqali kerakli ma'lumotlar bazasini yuklab olishingiz mumkin.


Bundan tashqari, barcha eksport qilingan ma'lumotlar bazalari yo'lda saytingizda saqlanadi. /sxd/backup/. Agar ma'lumotlar bazasini saqlash muvaffaqiyatsiz bo'lsa, papkani tekshiring zaxira yozish ruxsati 777.

Bu ma'lumotlar bazasini eksport qilishni (yuklab olish) tugatadi.

Sypex Dumper orqali katta MySQL ma'lumotlar bazalarini import qilish (yuklash).

Yuqorida biz siz bilan kerakli ma'lumotlar bazasini olish usulini muhokama qildik, endi siz uni boshqa loyihaga o'tkazishingiz (import qilishingiz) kerak va buning uchun biz quyidagilarni qilamiz.

1. veb-saytimizdan bepul.

2. Arxivni oching va papkani saytga yuklang sxd siz uchun qulay tarzda.

3. Jildga /sxd/backup/ ilgari olingan (yuklab olingan) ma'lumotlar bazasini yuklang.

4. Keyingiga o'ting http://your_site.ru/sxd/index.php(Qaerda your_site.com– saytingiz domeni), shundan so'ng sizning oldingizda ma'lumotlarni kiritish shakli ochiladi. Unda siz kerakli ma'lumotlar bazasini boshqarish huquqiga ega bo'lgan foydalanuvchi ma'lumotlarini ko'rsatasiz va " Kirish uchun».

5. Ochilgan sahifada (muvaffaqiyatli avtorizatsiya bilan) bo'limda 1 marta bosing " Import» yuqori menyuda. Agar foydalanuvchi uchun bir nechta ma'lumotlar bazalari mavjud bo'lsa, biz ochiladigan ro'yxatdan ma'lumotlarni import qiladigan (yuklaydigan) birini tanlang. Qolgan sozlamalar o'zgarishsiz qoldirilishi mumkin va "ni bosing. Yugurish».


Men qayd etmoqchiman Agar kerak bo'lsa, siz butun ma'lumotlar bazasini emas, balki faqat ba'zi jadvallarini import qilishingiz mumkin.

6. Ma'lumotlar bazasini import qilish (yuklash) jarayoni tugagandan so'ng (siz buni jarayon satrida tushunishingiz mumkin), vazifa bajarilgan deb hisoblanishi mumkin.


Katta MySQL ma'lumotlar bazalarini SSH terminali orqali eksport qilish (yuklab olish).

SSH - bu tizim yoki serverni masofadan turib (maxsus buyruqlar orqali) boshqarish imkonini beruvchi tarmoq protokoli. Windows-da ushbu protokol bilan ishlash uchun ko'plab dasturlar mavjud, ulardan eng mashhuri PuTTY.

Ba'zi hostinglarda, masalan, boshqaruv panelida o'rnatilgan terminal mavjud. Biz uzoqqa bormaymiz va uning misolidan foydalanib, sarlavhada tasvirlangan vazifani ko'rib chiqamiz. Shuni ta'kidlash kerak quyida tavsiflangan operatsiyalar alohida SSH mijozida ham amalga oshirilishi mumkin.

1. Biz terminalni ishga tushiramiz. Unda shunday ko'rinadi:


2. Agar siz serverga uchinchi tomon dasturi orqali ulansangiz, tegishli ma'lumotlarni kiritish orqali unga kiring (ularni hosting boshqaruv panelida yoki hosting provayderingizdan olishingiz mumkin).

ikkinchi- Bu:

mysqldump -u USERNAME -p MA'LUMOTLAR BAZASI > backup.sql

to'g'ridan-to'g'ri eksportning o'zi, bu erda:

USERNAME- ma'lumotlar bazasiga kirish huquqiga ega foydalanuvchining login.

MA'LUMOTLAR BAZASI- biz eksport qilmoqchi bo'lgan ma'lumotlar bazasi nomi.

backup.sql– maʼlumotlar bazasi saqlanadigan fayl nomi va ga nisbatan yoʻl. Ushbu dizayn bilan ma'lumotlar bazasi hosting ildiziga saqlanadi.

4. uchinchi bosqichdaKirish"klaviaturada. Eslatma

Server yana SSH orqali buyruqlarni qabul qilishga tayyor bo'lgandan so'ng, bu ma'lumotlar bazasi eksporti tugallanganligini anglatadi va siz uni FTP orqali yoki hosting fayl menejeri orqali yuklab olishingiz mumkin.

SSH-ga eksport qilish (va import qilish) jarayoni translyatsiya qilinmaydi va agar sizning ma'lumotlar bazangiz juda katta bo'lsa, sabr qiling, chunki serverdan 20 daqiqadan ko'proq vaqt o'tgach javob olishingiz mumkin.

SSH terminali orqali katta MySQL ma'lumotlar bazalarini import qilish (yuklash).

SSH nima, biz yuqorida bilib oldik va endi biz ilgari yuklab olingan ma'lumotlar bazasini boshqa loyihaga qanday import qilishni ko'rib chiqamiz.

1. sizning ildizingizda xosting, avval yuklab olingan ma'lumotlar bazasini siz uchun qulay tarzda yuklab oling.

2. SSH orqali xosting/serveringizga ulaning.

shuning uchun biz, albatta, hosting ildiziga boramiz va ikkinchi- Bu:

Shunday qilib, biz joriy katalogdagi fayllar va kataloglarning to'liq ro'yxatini olamiz. Biz ilgari yuklangan ma'lumotlar bazasini qo'shmoqchimiz.

4. Agar hamma narsa yaxshi bo'lsa va baza joyida bo'lsa, oxirgi buyruqni kiriting:

mysql -u USERNAME -p MA'LUMOTLAR BAZASI< backup.sql

USERNAME- ma'lumotlar bazasiga kirish huquqiga ega foydalanuvchining login.

MA'LUMOTLAR BAZASI- biz ma'lumotlarni import qiladigan ma'lumotlar bazasi nomi.

backup.sql- yuklanadigan fayl nomi va ga nisbatan yo'l. Ushbu dizayn bilan ma'lumotlar bazasi hosting ildizidan import qilinadi.

5. Buyruqni kiritganingizdan so'ng, siz ko'rsatgan foydalanuvchidan parolni kiritishingiz so'raladi to'rtinchi bosqichda. Parolingizni kiriting va "ni bosing" Kirish"klaviaturada. Eslatma SSH terminalidagi parolni kiritish ko'rsatilmaganligi, ya'ni siz parolni kiritasiz yoki uni qo'yasiz - uning o'rnida har doim bo'sh joy bo'ladi.

Shundan so'ng, server yana SSH orqali buyruqlarni qabul qilishga tayyor bo'lganda, bu ma'lumotlar bazasini import qilish tugallanganligini anglatadi va siz loyiha ustida ishlashni davom ettirishingiz mumkin.

Xayrli kun do'stlar, bugun biz qanday qilishni o'rganamiz. Bu nima uchun, siz savol berishingiz mumkin. Eng avvalo ma'lumotlar bazasini eksport qilish favqulodda vaziyatlarda siz uchun muhim ma'lumotlarni yo'qotmaslik uchun vaqti-vaqti bilan bajarilishi kerak. Eksport ma'lumotlar bazasi haqidagi barcha ma'lumotlarni saqlaydigan kichik fayl bo'ladi. Uchun ma'lumotlar bazasini eksport qilish PHPMyAdmin-ga o'tishingiz va sizni qiziqtirgan ma'lumotlar bazasini bosishingiz kerak. Shundan so'ng siz undagi barcha jadvallarni ko'rasiz va ularga kirmasdan eksport deb nomlangan menyu tugmasini bosing. Sizning oldingizda quyidagi sahifa paydo bo'ladi:


Men sizga tezkor eksport usulini tanlashingizni maslahat beraman, shuningdek formatda ko'rsating SQL. Shundan so'ng siz OK tugmasini bosishingiz mumkin. Faylni saqlashingizni so'ragan oynani ko'rasiz.


Siz faylni kerakli joyda saqlaysiz, asosiysi uni qayerda saqlaganingizni eslab qolish, chunki bu biz uchun juda muhim.
Oddiy eksport usuliga kelsak. Agar kerak bo'lsa, undan ham foydalanishingiz mumkin, eksport qilishda siz o'rnatishingiz mumkin bo'lgan ko'plab qo'shimcha sozlamalar mavjud. Masalan, ma'lumotlar bazasidan kerakli jadvallarni tanlang, kodlashni belgilang va boshqalar. Agar siz ushbu sozlamaga qiziqsangiz, uni ko'rishingiz mumkin. Ammo biz ushbu parametrni batafsil ko'rib chiqmaymiz.
Faylni kompyuteringizga saqlaganingizdan so'ng, men sizdan ma'lumotlar bazasini o'chirishingizni so'rayman. Buni qanday qilish kerak, men sizga tushuntirmayman, chunki biz buni allaqachon boshdan kechirganmiz. O'chirishdan qo'rqmang, biz siz bilan hamma narsani o'z joyiga qaytaramiz.
Endi band bo'lish vaqti keldi ma'lumotlar bazasi importi. Import menyusiga o'ting.


Biz kompyuteringizning umumiy ko'rinishini tanlaymiz va faylimizga yo'lni ko'rsatamiz. Va OK tugmasini bosing. Ko'rib turganingizdek, sizda xatolik bor. Xavotir olmang, gap shundaki, biz ma'lumotlar bazasini o'zi emas, balki uning barcha jadvallarini import qildik. Shuning uchun, avval ma'lumotlar bazasini yarating, unga kiring va yuqoridagilarning barchasini bajarib, import tugmasini bosing. OK tugmasini bosish orqali siz muvaffaqiyatga erishasiz va agar siz hamma narsani to'g'ri bajargan bo'lsangiz, hech qanday xato ko'rinmasligi kerak.


Ko'rib turganingizdek, jadvalimiz o'z o'rnida yana paydo bo'ldi va undagi barcha ma'lumotlar saqlanib qoldi. Endi siz qanday ajoyib imkoniyat ekanligini tushunasiz PHPMyAdmin-da ma'lumotlar bazasini eksport qilish va import qilish. Axir, agar siz bir kunda ko'p yillar davomida barcha ishlanmalaringizni yo'qotsangiz, ushbu fayl tufayli siz hamma narsani qaytarishingiz mumkin. Shu bilan tez orada siz bilan xayrlashaman.

Xayrli kun, hamkasblar 🙂

Bugun men sizni MySQL konsolida va MySQL buyruq qatorida MySQL bilan ishlash bilan tanishtirishni davom ettiraman.

Men allaqachon konsol orqali MySQL ma'lumotlari bilan asosiy amallarni bajarish va MySQL ma'lumotlar bazasining zaxira nusxasini yaratish, shuningdek, unda saqlangan ma'lumotlarni eksport qilish haqida maqolalar yozganman.

Ushbu hikoyaning mantiqiy davomi MySQL ma'lumotlar bazasini import operatsiyalari yordamida ma'lumotlar bazasi va unda saqlangan ma'lumotlarni qayta tiklash bo'ladi. Va eng muhimi, biz buni barcha qattiq ishlab chiquvchilar vositasi bilan - konsol orqali qilishda davom etamiz.

Agar sizga phpMyAdmin orqali ma'lumotlar bazasini import qilish bo'yicha ko'rsatmalar kerak bo'lsa, uni maqolada topishingiz mumkin. Joriy maqolada men uni yana tasvirlashni xohlamayman, ayniqsa bugungi material faqat MySQL ma'lumotlar bazasini konsol orqali import qilishga bag'ishlanadi.

Ammo, yo'llar va vositalarni ko'rib chiqishni boshlashdan oldin, MySQL ma'lumotlar bazasi importi nima, u qanday va buni amalga oshirishning eng yaxshi usuli haqida bir necha so'z bormi?

MySQL ma'lumotlar bazasini import qilish: nima va nima uchun?

MySQL ma'lumotlar bazasini import qilish - bu ma'lumotlar bazasini ma'lumotlar bilan to'ldiradigan operatsiya. Bunday holda, ma'lumotlar manbai dump fayli - eksport operatsiyasi paytida avtomatik ravishda yaratilgan boshqa ma'lumotlar bazasining surati yoki maxsus tayyorlangan SQL skriptidir.

MySQL ma'lumotlar bazasini import qilish va eksport qilishda ma'lumotlar bazasida saqlanadigan ikki turdagi ma'lumotlar mavjud:

  1. ma'lumotlar bazasining tuzilishi, uning jadvallari va ularda saqlanadigan ma'lumotlar (so'zlashuvda ma'lumotlar bazasi dumpi deb ataladi);
  2. faqat jadvalda saqlangan yoki yordamida to'plangan ma'lumotlar TANLASH so'rovlar.

Ushbu maqola ikkala variantni ham qamrab oladi.

MySQL dampidan ma'lumotlar bazasini uning tuzilishi va barcha saqlangan ma'lumotlari bilan qayta tiklash uchun, yuqorida aytib o'tilganidek, ma'lumotlar bazasi dump fayli kerak bo'ladi, bu har qanday kengaytmali matn fayli (uni birinchi navbatda hajmini kamaytirish uchun arxivga o'rash mumkin), ma'lumotlar bazasini va jadvallarni yaratish, shuningdek ularni ma'lumotlar bilan to'ldirish uchun SQL buyruqlarini o'z ichiga oladi.

Shuning uchun, MySQL ma'lumotlar bazasini dumpdan tiklash uchun siz fayldagi buyruqlarni bajarishingiz kerak.

Oddiy ma'lumotlarni qayta tiklash uchun bunday murakkabliklar kerak emas. Sinov fayli mavjud bo'lishi kifoya, unda ma'lumotlar ma'lumotlar bazasi jadvalidagi kabi tuziladi: ma'lumotlarga ega ustunlar soni jadvalga kirish atributlari soniga mos keladi.

Ushbu maqsadlar uchun oddiy txt fayli ham mos keladi, unda ma'lumotlar ajratiladi yoki boshqa kengaytmali maxsus elektron jadval muharrirlarida (Microsoft Office Excel, OpenOffice va boshqalar) yaratilgan fayllar: xls, csv, odt va boshqalar.

Ushbu formatlar hatto afzalroqdir, chunki. ular yaratilganda, ma'lumotlar chegaralovchilari tahrirlovchilar tomonidan avtomatik ravishda qo'shiladi va oddiy matn faylida bo'lgani kabi ularni alohida kiritishning hojati yo'q.

MySQL-ga ma'lumotlarni qo'shish: Asboblar

MySQL ma'lumotlar bazasini import qilish vositalariga kelsak, bugungi kunda ulardan uchtasi borligini aytishim mumkin.

Men ularni eng past darajadan boshlab, eng yuqori darajaga qadar (barcha turdagi qobiq va qo'shimchalardan foydalanish nuqtai nazaridan) sanab o'taman:

  1. Server konsoli va MySQL buyruq qatori;
  2. MySQL-ga til vositalaridan foydalangan holda ma'lumotlarni yozish imkonini beruvchi dasturlash tillarida yozilgan skriptlar;
  3. Ma'lumotlar bazasi bilan ishlash uchun vizual interfeysni ta'minlovchi tayyor dasturlar (xuddi shu phpMyAdmin, MySQL WorkBench, MySQL Manager va boshqalar).

O'ylaymanki, asboblarning tartibi hech qanday savol tug'dirmaydi, chunki. dasturlash tili vositalari, qoida tariqasida, MySQL konsoli buyruqlari asosida ishlaydi, dasturlar esa skriptlarga asoslanadi yoki to'g'ridan-to'g'ri MySQL buyruq qatori bilan ishlaydi.

Qanday bo'lmasin, konsol hamma narsaning boshida, qolgan asboblar esa, aslida, uning emulyatorlari.

Shuning uchun, MySQL-ga ma'lumotlarni import qilishda konsoldan foydalanish veb-serverdagi dasturlash tillari sozlamalari va dasturlarning o'zlari tomonidan o'rnatilgan turli xil cheklovlarni chetlab o'tishga imkon beradi (aytmoqchi, har doim ham o'zgartirib bo'lmaydi).

Shu sababli, MySQL ma'lumotlar bazasini konsol orqali to'ldirish nafaqat tezroq bo'lishi mumkin, balki bu operatsiyani printsipial jihatdan amalga oshirishi mumkin, chunki skriptlar va dasturlar maksimal skriptni bajarish vaqtiga yetganda importni to'xtatishga moyil bo'ladi yoki yuklab olingan fayl hajmi tufayli umuman boshlamaydi.

O'ylaymanki, phpMyAdmin yordamida katta MySQL ma'lumotlar bazasiga dumpni yuklashga uringan har bir kishi nima haqida gapirayotganimni tushunadi.

Ko'pincha, bu cheklovlar MySQL ma'lumotlar bazasini import qilishda xatolarning sababi bo'lib, konsoldan foydalanganda hech qachon ko'rmaysiz.

Albatta, ular doimiy emas va ularni o'zgartirish mumkin, lekin bu qo'shimcha bosh og'rig'i, aytmoqchi, oddiy foydalanuvchilar uchun hal qilib bo'lmaydigan bo'lib chiqishi mumkin.

Umid qilamanki, men sizni MySQL ma'lumotlar bazasini konsol orqali import qilishga undadim (bundan tashqari, uning tuzilishi va alohida ma'lumotlari).

Va bu ijobiy eslatmada biz uzoq kutilgan amaliyotga o'tamiz va konsoldagi ma'lumotlar bazasiga ma'lumotlarni uzatish usullari va buyruqlarini ko'rib chiqamiz.

Konsol yordamida MySQL ma'lumotlar bazasini dumpdan qanday tiklash mumkin?

Shunday qilib, konsoldan MySQL dumpini joylashtirish uchun ikkita usul mavjud:

  1. MySQL buyruq satrida buyruqdan foydalanish;
  2. server konsolining o'zida.

Keling, tartibda boshlaylik.

Shunday qilib, MySQL ma'lumotlar bazasi dumpini orqali mavjud omborga import qilish uchun biz avval uni ishga tushirishimiz va kerakli ma'lumotlar bazasini tanlashimiz kerak.

Ushbu harakatlarning amalga oshirilishi yuqoridagi havoladagi maqolada batafsil tavsiflangan, shuning uchun agar sizga ularning tavsifi kerak bo'lsa, uni u erdan oling, chunki. Ikkinchi bosqichda ularni takrorlashni xohlamayman.

Yuqoridagi amallarni bajarganingizdan so'ng, MySQL Shell-ga quyidagi buyruqni kiriting:

Manba yo'li_va_dump_fayl nomi;

Biz uchun qolgan narsa - bu axlatxonadagi operatsiyalarning borishi haqidagi konsoldagi xabarlarni o'rganish.

Avval kerakli ma'lumotlar bazasiga o'tmasdan, konsoldagi MySQL serveriga ulangandan so'ng, dumpni quyidagi buyruq bilan import qilish mumkin:

Mysql -u foydalanuvchi nomi -p ma'lumotlar bazasi_nomi< путь_и_имя_файла_дампа

Ana xolos. Asosiysi, agar fayl juda katta bo'lsa, import tugashini kutishdir. Chiqindilarni yig'ishning tugallanishini server konsoli qachon yana mavjud bo'lishiga qarab baholash mumkin.

To'g'ri aytganda, bu avvalgisiga nisbatan bu usulning kamchiligi, tk. birinchisida import paytida ma'lumotlar bazasida bajariladigan amallarni kuzatish mumkin, ikkinchisida esa yo'q.

Agar dump fayli arxivga o'ralgan bo'lsa, yuklab olayotganda uni yo'l davomida ochishingiz kerak bo'ladi.

Linuxda buni quyidagicha amalga oshirish mumkin:

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

Windows-da konsolda arxivni ochish uchun standart yordamchi dastur mavjud emas, shuning uchun uni qo'shimcha ravishda o'rnatish kerak bo'ladi.

Ko'rib turganingizdek, MySQL dumpini konsol orqali import qilish bitta buyruq bilan bajarilishi mumkin bo'lgan juda oddiy operatsiya. Shunday qilib, ushbu protsedurani bajarish uchun dasturchi bo'lishingiz shart emas.

Agar siz to'satdan server konsolini qanday ishga tushirishni bilmasangiz, unda siz ushbu ma'lumotni MySQL buyruq satridagi maqolada topishingiz mumkin, bu menda ilgari bo'lgan havola.

Aytgancha, tavsiflangan usullardan foydalanib, butun ma'lumotlar bazasini emas, balki MySQL jadvalini import qilish ham mumkin. Bunday holda, siz yuklagan dump uni yaratish va ma'lumotlar bilan to'ldirish operatsiyalarini o'z ichiga olishi kerak.

Konsoldagi fayldan MySQL ma'lumotlar bazasiga ma'lumotlarni yuklash

Biz MySQL ma'lumotlar bazasini konsoldagi axlatxonadan tiklash haqida gaplashdik. Endi fayllardan ma'lumotlarni xuddi shu tarzda, jumladan xls va csv dan MySQL ma'lumotlar bazasiga qanday import qilishingiz mumkinligini aniqlash vaqti keldi.

Ushbu vazifani bajarish uchun bizda avvalgi holatda bo'lgani kabi yana ikkita vosita mavjud: MySQL buyruq qatori va server konsoli.

Keling, tartibda qayta ko'rib chiqishni boshlaylik.

Shunday qilib, MySQL buyruq qatorida faylni import qilish uchun biz uni qayta ishga tushiramiz va ma'lumotlar yuklanadigan ma'lumotlar bazasiga o'tamiz.

MA'LUMOTLAR INFILE "path_and_dump_file_name" JADVAL `ma'lumotlar bazasi_jadval` USTUNLARIGA YUKLASH "," BILAN TUG'ALANGAN "\"" SATIRLAR BILAN "\n" BILAN TUG'ILGAN;

Shuni unutmangki, agar MySQL serveri variant bilan ishga tushirilgan bo'lsa --secure-file-priv(bu ko'pincha WAMP / MAMP tuzilmalariga kiritilgan MySQL distributivlaridan foydalanganda sodir bo'ladi), keyin fayl nomi tizim o'zgaruvchisini hisobga olgan holda ko'rsatilishi kerak. xavfsiz_fayl_priv.

MySQL ma'lumotlar bazasini MySQL Shell-ga kirmasdan server konsoliga import qilish uchun bizga yordamchi dastur kerak. mysqlimport MySQL tarqatilishining bir qismi bo'lgan , va unga quyidagi chaqiruv:

mysqlimport -u foydalanuvchi nomi -p ma'lumotlar bazasi_nomi_va_import_faylining_yo'li

Ushbu yordamchi dastur SQL buyrug'ining analogidir INFILE MA'LUMOTLARINI YUKLASH, faqat buyruq qatori. Ammo, hayratlanarli, nima uchun uning chaqiruv parametrlari orasida fayldan ma'lumotlar yuklanadigan jadval ko'rsatilmagan?

Gap shundaki, mysqlimport jismoniy jihatdan bu parametrga ega emas. Buning o'rniga, import qilinadigan fayl nomida ma'lumotlar yuklanadigan jadval nomi bo'lishi kerak.

Bular. agar siz Excel jadvalidan MySQL jadvaliga import qilmoqchi bo'lsangiz foydalanuvchilar, keyin faylingiz nomlanishi kerak users.xls.

Import qilingan faylning kengaytmasi, yuqorida aytib o'tilganidek, har qanday bo'lishi mumkin.

Mysqlimport yordamida MySQL-ga bir vaqtning o'zida bir nechta xls yoki csv fayllarni yuklash ham mumkin. Ma'lumotlar o'z manziliga etib borishi uchun oldingi misoldagi kabi ma'lumotlar bazasining fayllari va jadvallari nomlari ham mos kelishi kerak.

Agar to'satdan import qilingan fayldagi ustunlar ma'lumotlar bazasi jadvalining ustunlari bilan bir xil ketma-ketlikda bo'lmasa, ularning tartibini aniqlashtirish uchun siz quyidagi shaklda --columns opsiyasidan foydalanishingiz kerak:

Mysqlimport -u foydalanuvchi nomi -p ma'lumotlar bazasi_nomi --ustunlar ustunlar1, ustunlar2, ... import_fayl_name va_path

Tabiiyki, misollarimda mysqlimport parametrlarining to'liq ro'yxatini ko'rib chiqmadim, chunki ularning ba'zilari juda o'ziga xos va kamdan-kam hollarda amalda qo'llaniladi.

Agar siz ular bilan tanishmoqchi bo'lsangiz, ularning to'liq ro'yxati bu yerda - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

MySQL ma'lumotlar bazasiga axlatxonadan ma'lumotlarni yuklash xususiyatlari

Agar siz katta MySQL ma'lumotlar bazasini import qilish jarayoni tezroq bo'lishini istasangiz, men MySQL ma'lumotlar bazasini eksport qilish bo'yicha oldingi maqolamda yozgan mysqldump buyrug'ining maxsus parametrlaridan foydalangan holda ma'lumotlar bazasi dumpini yaratishingiz kerak. matnga avvalroq joylashtirilgan edi.

Afsuski, MySQL ma'lumotlar bazasini import qilish buyruqlarining o'zida bunday imkoniyatlar yo'q.

Bitta narsa - katta ma'lumotlar bazasini yuklashda tezlikni oshirish, siz quyidagi xususiyatdan foydalanishingiz mumkin.

1. Dump faylini oching (fayl menejerlarida afzalroq, chunki oddiy muharrirlar katta fayllardan shunchaki o'lishi mumkin).

2. Fayl boshiga quyidagi qatorlarni yozamiz:

SET xorijiy_key_checks = 0; UNIQUE_CHECKS = 0 ni o'rnatish; SET AVTOCOMMIT = 0;

Eslatma! Ehtimol, ular allaqachon o'sha erda yoki sharhlangan (axlatni yaratadigan ko'plab dasturlar ularni avtomatik ravishda qo'shishi mumkin)

3. Fayl oxirida teskari amallarni yozing:

SET xorijiy_key_checks = 1; UNIQUE_CHECKS ni o'rnatish = 1; AUTOCOMMIT ni o'rnatish = 1;

Aytgancha, ushbu buyruqlar nafaqat import jarayonini tezlashtirishga yordam beradi, balki buni amalga oshirishga imkon beradi.

Gap shundaki, agar siz MySQL ma'lumotlar bazasini import qilish uchun dump faylini ko'rib chiqqan bo'lsangiz, yuklangan jadvallar tuzilishini o'rnatish jarayoni quyidagicha ko'rinishini payqagan bo'lishingiz mumkin:

AGAR MAVJUD BO'LSA JADVALNI TO'CHIRISH "mijozlar"; CREATE TABLE `mijozlar` (...);

Bular. ma'lumotlar bazasida import qilingan bilan bir xil nomdagi jadval uchun qidiruv amalga oshiriladi va agar topilsa, u o'chiriladi va qayta yaratiladi.

Va agar to'satdan mavjud jadval boshqalarga xorijiy kalitlar bilan ulangan bo'lsa, unda butun yuk muvaffaqiyatsiz bo'ladi.

Shuning uchun, chet el kalitlari va boshqalar mavjudligini tekshirishni o'chirib qo'yish ham MySQL ma'lumotlar bazasini import qilish jarayoni muvaffaqiyatli yakunlanishining ajoyib kafolati hisoblanadi.

MySQL ma'lumotlar bazasiga va boshqa fayllarga csv import qilish xususiyatlari

Matnli fayllardan MySQL ma'lumotlar bazasiga ma'lumotlarni yuklashda xorijiy kalitlarni o'chirish ham kerak bo'lishi mumkin.

Bundan tashqari, oldingi holatdan farqli o'laroq, bu holda faylga direktivalar yozish ishlamaydi, chunki Undagi SQL buyruqlari qabul qilinmaydi va bajarilmaydi.

MySQL ma'lumotlar bazasini eksport qilish bo'yicha oldingi maqolada men buni MySQL buyruq satrida quyidagi operatsiya yordamida qanday qilishni aytib o'tdim:

FOREIGN_KEY_CHECKS NI O'rnatish=0;

Biroq, men u erda MySQL tizim o'zgaruvchisi haqida gapirmadim FOREIGN_KEY_CHECKS ikki ma'noga ega: global va sessiya (joriy sessiya uchun).

MySQL o'zgaruvchilarining global qiymati MySQL serverida bajarilgan har qanday harakatlar, jumladan serverni qayta ishga tushirishgacha amal qiladi. Keyin o'zgaruvchilarning qiymatlari qayta o'rnatiladi va ularga standart qiymatlar beriladi.

MySQL tizim o'zgaruvchisining seans qiymati faqat foydalanuvchining MySQL serveri bilan sessiyasi davomiyligi uchun o'rnatiladi. Seans yoki seans mijoz serverga ulanganda boshlanadi, bunda unga noyob bo'ladi ulanish identifikatori, va serverdan uzilganda tugaydi, bu istalgan vaqtda sodir bo'lishi mumkin (masalan, vaqt tugashi bilan).

Nega men buni eslashga qaror qildim?

Chunki MySQL Shell-ga kirmasdan, server konsoli orqali faylni MySQL ma'lumotlar bazasiga yuklash buyruqlarini bajarayotganda, yuqorida tavsiflangan usulda tashqi kalitlarni tekshirishni o'chirib qo'yish ish bermasligini aniqladim.

Konsol hali ham jadvalda xorijiy kalitlar mavjudligi sababli xato xabarini ko'rsatdi.

Va yuqoridagi buyruq global miqyosda emas, balki sessiya ichida tashqi kalitlarning mavjudligini tekshirishni o'chirib qo'yganligi sababli paydo bo'ldi, bu ko'rsatilgan usulga qo'shimcha ravishda quyidagi tarzda ham amalga oshirilishi mumkin:

SET SESSION variable_name = o'zgaruvchan_qiymat; SET @@session.variable_name = o'zgaruvchan_qiymat; SET @@variable_name = o'zgaruvchan_qiymat;

Yuqoridagi buyruqlarda o'zgaruvchi aniq seans o'zgaruvchisi sifatida belgilangan.

Va men csv faylini MySQL jadvaliga server konsoli orqali MySQL serveriga to'g'ridan-to'g'ri ulanmasdan yuklaganim uchun seans yaratilmadi, uning ichida o'zgaruvchining seans qiymati ishlaydi.

FOREIGN_KEY_CHECKS global qiymatini o'rnatdim va import muvaffaqiyatli bo'ldi.

Buni quyidagi usullardan birida qilishingiz mumkin:

SET GLOBAL o'zgaruvchi_nomi = o'zgaruvchan_qiymat; SET @@global.variable_name = o'zgaruvchan_qiymat;

Qiymatlarni o'zgartirgandan so'ng, o'zgarishlar kuchga kirganligini tekshirish uchun o'zgaruvchining qiymatlarini ko'rib chiqish ortiqcha bo'lmaydi. Seans va global qiymatlarni bir vaqtning o'zida ko'rsatish uchun quyidagi buyruqdan foydalaning:

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

Bu MySQL ma'lumotlar bazasini import qilish haqidagi bugungi maqolamizni yakunlaydi. Izohlarda o'z taassurotlaringiz va o'z tajribangizni baham ko'ring. O'ylaymanki, ko'pchilik sizning tajribangiz bilan qiziqadi.

Ko'rishguncha! 🙂

P.S.: agar sizga veb-sayt kerak bo'lsa yoki mavjud veb-saytga o'zgartirishlar kiritishingiz kerak bo'lsa, lekin bunga vaqt va xohish bo'lmasa, men o'z xizmatlarimni taklif qila olaman.

5 yildan ortiq tajriba professional veb-saytlarni ishlab chiqish. Bilan ishlash PHP, opencart,

Assalomu alaykum, do'stlar! 🙂

Bugun men konsolda MySQL bilan ishlash haqida gapirishni davom ettirishga va MySQL ma'lumotlar bazasini eksport qilish tartibiga e'tibor berishga qaror qildim.

Ushbu maqolada men MySQL ma'lumotlar bazasini qanday tashlash, shuningdek MySQL-dan Excel fayli va csv formatiga ma'lumotlarni yuklash haqida gapiraman.

Biz ma'lumotni olishning turli xil variantlarini ko'rib chiqamiz: bitta va bir nechta ma'lumotlar bazalarining axlatini yaratish, alohida jadvallardan ma'lumotlarni eksport qilish va o'zboshimchalik natijalari. TANLASH so'rovlar.

Shuningdek, MySQL ma'lumotlar bazasidan ma'lumotlarni server konsolida va MySQL buyruq qatorida qanday ko'rsatish haqida gapiraylik.

Ushbu maqolada men phpMyAdmin va boshqa vizual vositalar yordamida ma'lumotlarni qanday eksport qilish haqida gapirmayman.

Birinchidan, chunki tarmoqda ushbu mavzu bo'yicha etarli materiallar mavjud. Bundan tashqari, men nusxa ko'chirish istagi bilan yoqmaydigan yuqori sifatli material.

Va, ikkinchidan, men o'zim gapirgan maqolalarimning birida MySQL ma'lumotlar bazasidan SQL fayliga ma'lumot chiqarish jarayonini qisqacha ko'rib chiqdim.

Shunday qilib, agar siz konsol bilan ishlash bo'yicha foydali ma'lumotlarni topishi mumkin bo'lgan professional dasturchi yoki tizim ma'muri bo'lmasangiz va faqat ma'lumotlar bazasini phpMyAdmin-ga eksport qilish bo'yicha ko'rsatmalar uchun kelgan bo'lsangiz, yuqoridagi havoladagi ma'lumotlarni o'qish bilan cheklanishingiz mumkin.

Meni to'g'ri tushunishingizni istayman: men sizni hech qanday tarzda xafa qilmoqchi emasman, lekin faqat vaqtingizni maqsad uchun maksimal foyda bilan o'tkazishingizni va izlagan narsangizni olishingizni xohlayman.

Bu kirish qismini yakunlaydi va biz MySQL ma'lumotlar bazasi axlatini yaratish uchun konsol buyruqlarining umumiy ko'rinishiga o'tamiz, men uni saqlangan ma'lumotlar miqdori bo'yicha saralashga qaror qildim: butun ma'lumotlar bazasini alohida jadvallar va ixtiyoriy so'rovlar natijalariga eksport qilish. .

Konsol orqali MySQL ma'lumotlar bazasining dumpini yaratish

Men boshida kichik bir aniqlik kiritmoqchiman.

Asosiy axlatxona- ishga tushirilganda ma'lumotlar bazalari va jadvallarni yaratish hamda ularni ma'lumotlar bilan to'ldirish imkonini beruvchi SQL buyruqlar to'plamiga ega fayl. MySQL ma'lumotlar bazasini boshqa serverga yoki mavjud serverga nusxalash uchun yuklab olishni istaganlar uchun dump kerak bo'ladi.

Bundan tashqari, agar kimdir bilmagan bo'lsa, MySQL ma'lumotlar bazasining zahira nusxasi, aslida, uning ma'lum bir vaqt ichida amalga oshiriladigan dumpidir, agar kerak bo'lsa, ma'lumotlar bazasi tuzilishi va ma'lumotlarini tiklash imkonini beradi.

Ma'lumotlarni eksport qilish- bu faqat matn yoki grafik muharrirlar bilan keyingi ishlash uchun matn ko'rinishidagi jadvallardan ma'lumot olish.

Shuning uchun, bu harakatlar uchun buyruqlar biroz boshqacha bo'ladi.

Ma'lumotlar bazasi dumpini yaratish uchun MySQL-da o'rnatilgan yordamchi dastur mavjud mysqldump, server konsolida yoki boshqa qobiqdagi MySQL buyruq qatoridan tashqarida foydalanish uchun.

Shunday qilib, eng oddiy va eng keng tarqalgan variant uchun - MySQL konsolidagi ma'lum bir ma'lumotlar bazasidan ma'lumotlarni boshqa serverga yoki ichki nusxaga o'tkazish uchun eksport qilish uchun siz quyidagi buyruqni bajarishingiz kerak:

mysqldump -u foydalanuvchi nomi -p ma'lumotlar bazasi_nomi > yo'l_va_dump_fayl_nomi

Ushbu yordamchi dastur MySQL ma'lumotlar bazasi axlatlarini faqat SQL buyruqlari bo'lgan fayllar ko'rinishida yaratishi mumkin, shuning uchun faylingiz uchun qanday kengaytmani tanlasangiz ham, uning mazmuni bir xil bo'ladi. Va faylni yaratish mumkin bo'lishi uchun MySQL-dan ma'lumotlarni eksport qilishdan oldin u joylashgan katalogning yozish ruxsatlarini tekshirishni unutmang.

Agar siz to'satdan serverdagi barcha ma'lumotlar bazalarini o'chirib tashlashingiz kerak bo'lsa, quyidagi buyruq variantidan foydalaning:

mysqldump -u foydalanuvchi nomi -p --all-ma'lumotlar bazalari > path_and_dump_file_name

Faqat bir nechta maxsus ma'lumotlar bazalarini o'chirish uchun siz mysqldump-ga quyidagi variantlar bilan qo'ng'iroq qilishingiz kerak:

mysqldump -u foydalanuvchi nomi -p --ma'lumotlar bazalari ma'lumotlar bazasi_name1, ma'lumotlar bazasi_nomi2, ... > path_va_dump_fayl_name

Natijada, har bir holatda siz MySQL ma'lumotlar bazasi dumpini olasiz, unda o'z ichiga olgan jadvallar (maydonlar, ularning turlari, indekslari, kalitlari va boshqalar) tuzilishini yaratish buyruqlari, shuningdek ularni ma'lumotlar bilan to'ldirish operatsiyalari mavjud.

Ushbu parametr faqat butun ma'lumotlar bazalarini tiklash va nusxalash uchun javob beradi.

Ba'zi MySQL jadvallarining zaxira nusxalarini qanday yaratish va ularning ma'lumotlarini o'qilishi mumkin bo'lgan shaklda olish haqida keyinroq muhokama qilinadi.

MySQL jadvalini o'chirish va ma'lumotlarni eksport qilish

Muayyan MySQL ma'lumotlar bazasi jadvallarining axlatini yaratish uchun bizga bir xil yordamchi dastur kerak mysqldump, quyidagi parametrlar bilan chaqiriladi:

mysqldump -u foydalanuvchi nomi -p ma'lumotlar bazasi_nomi jadval_nomi1, jadval_nomi2, ... > path_va_dump_fayl_name

Mysqldump ga qo'ng'iroq qilganda ham siz kerakli jadvallarni parametr qiymati sifatida belgilashingiz mumkin --jadvallar, qaysi parametrdan foydalanilganda --ma'lumotlar bazalari e'tiborga olinmaydi:

mysqldump -u foydalanuvchi nomi -p --ma'lumotlar bazalari ma'lumotlar bazasi_name1, ma'lumotlar bazasi_nomi2 --jadvallar jadval_name1, jadval_nomi, ... > path_va_dump_fayl_name

Yuqoridagi misol quyidagi xatoni ko'rsatadi:

Mysqldump: xatolik yuz berdi: 1049: noma'lum ma'lumotlar bazasi "ma'lumotlar bazasi_name1" ma'lumotlar bazasini tanlashda

Ko'rib turganingizdek, ko'rsatilganlar ro'yxatidan faqat oxirgi ma'lumotlar bazasidan foydalaniladi. Aslida, bu xatti-harakatlar juda mantiqiy, chunki. barcha ma'lumotlar bazalarida belgilangan jadvallar bo'lmasligi mumkin.

Mayli, bizda MySQL ma'lumotlar bazasi jadvallari bor. U ularni qayta tiklash yoki tuzilish bilan birga nusxalash uchun ishlatilishi mumkin.

Agar siz faqat ularda saqlangan ma'lumotlarni va yaxshisi, o'qilishi mumkin bo'lgan shaklda olishingiz kerak bo'lsa, uni menejerga yuborishingiz va uni oddiy matn yoki elektron jadval muharririda ko'rishingiz mumkinmi? MySQL-da buning uchun vositalar ham mavjud.

Kommunal xizmatni chaqirish imkoniyati bizning maqsadlarimizga erishishga yordam beradi. mysql ma'lum parametrlarga ega konsoldan:

Mysql -u foydalanuvchi nomi -p ma'lumotlar bazasi_name -e "Jadval_nomidan * TANGLASH"

Bu buyruq MySQL buyruq satriga o'tmasdan kerakli ma'lumotlar bazasiga so'rovni bajarish va natijani konsolga chiqarish imkonini beradi.

Xo'sh, ma'lumotlarni konsolga chiqarmaslik, balki ularni faylga yozish uchun siz buyruqni quyidagicha to'ldirishingiz kerak:

Mysql -u foydalanuvchi nomi -p -e "Tanlash * jadval nomidan" > path_and_filename

Ushbu konstruktsiyalar tufayli biz nafaqat jadvalning barcha sohalarida, balki muayyan sohalarda ham saqlangan ma'lumotlarni olishimiz mumkin. Buning uchun joker belgilar (*) o'rniga vergul bilan ajratilgan kerakli belgilarni ro'yxatdan o'tkazish kifoya.

Natijada, biz chiqishda oddiy matn faylini olamiz, unda sarlavha ko'rinishidagi maydonlar nomlari va barcha yozuvlar uchun ular haqidagi ma'lumotlar mavjud. Uni yaratishda qanday ruxsat berishingizdan qat'i nazar, uni oddiy matn muharririda ochish mumkin.

Agar siz MySQL ma'lumotlar bazasidan ma'lumotlarni xls yoki csv formatida eksport qilmoqchi bo'lsangiz, natijada olingan fayl elektron jadval muharrirlarida to'g'ri ko'rsatilishi uchun, buni qanday qilish haqida biroz keyinroq muhokama qilinadi 🙂

So'rovlar yordamida MySQL ma'lumotlar bazasidan zahira nusxalarini yaratish va ma'lumotlarni olish

Biz MySQL ma'lumotlar bazasini - bitta va bir nechta, shuningdek ularning individual jadvallarini qanday tashlash haqida gaplashdik. Ammo ba'zida amalda bitta jadval bilan cheklanmagan ma'lumotlar to'plamini eksport qilish kerak bo'lgan holatlar mavjud. Yoki jadvaldan faqat ba'zi ma'lumotlarni tanlashingiz kerak.

Korporativ loyihalarni ishlab chiquvchilar, ayniqsa, menejerlar har qanday statistik ma'lumotlarni taqdim etishni so'raganda, bu bilan tez-tez duch kelishadi. Yoki jadvalning ma'lum bir qismini tezda tiklash uchun zaxira nusxasini yaratish kerak bo'lganda.

Zaxiralash uchun bizga bir xil yordamchi dastur kerak mysqldump, uni shunday deb atash kerak:

Mysqldump -u foydalanuvchi nomi -p dbname table_name -- bu erda "qidiruv" > path_and_dump_file_name

Natijada, biz butun tuzilmasi bilan jadval yaratish uchun SQL buyruqlari bilan faylni olamiz, yaratilgandan so'ng, qidiruv so'rovi yordamida tanlangan ma'lumotlar bilan to'ldiriladi.

Agar biz faqat bitta yoki bir nechta jadvalda saqlangan ma'lumotlarni olishimiz kerak bo'lsa, unda biz oldingi holatda ishlatilgan buyruqni jadvaldagi barcha ma'lumotlarni tanlash uchun bir nechta tushuntirishlar bilan o'zgartirishimiz kerak:

Mysql -u foydalanuvchi nomi -p -e "Tanlash * FROM jadval nomi WHERE qidirish" > path_va_file_name

Siz tushunganingizdek, direktiv yordamida so'rovda ko'rsatilgan turli xil tushuntirishlarga qo'shimcha ravishda QAYERDA, siz boshqa SQL konstruksiyalaridan foydalanishingiz mumkin: QO'SHILING, UNION va hokazo.

Har qanday statistikani yig'ish mumkin 🙂

Xuddi shu amal MySQL buyruq satridan quyidagi buyruq bilan ham bajarilishi mumkin:

OUTFILE INTO "yo'l_va_fayl_nomi" ni qidirish uchun ma'lumotlar bazasi_jadvalidan * TANLASH;

Ushbu buyruq faqat tanlov natijalari bilan fayllarni yaratish uchun mo'ljallangan. Bundan tashqari, natijalar nafaqat fayllarga eksport qilinishi, balki o'zgaruvchilarga ham yozilishi va chiqish ma'lumotlarini turli usullar bilan formatlash mumkin.

Agar yuqoridagi holat sizning holatingizda bo'lsa, unda siz ushbu buyruqni chaqirish uchun parametrlar va variantlarning to'liq ro'yxatini bu erda topishingiz mumkin - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

MySQldump bo'yicha qisqacha sayohatim oxirida men MySQL ma'lumotlar bazasi va jadvallarining optimallashtirilgan dumpini yaratish, ma'lumotlar bazasini va individual jadvallarni tiklash uchun parametrlar ro'yxati bilan buyruqni chaqirish imkoniyatini bermoqchiman, bundan kamroq vaqt talab etiladi. oddiy qo'ng'iroq bilan:

mysqldump -u foydalanuvchi nomi -h MySQL_server_host_or_IP -p --no-autocommit --opt database_name > path_and_dump_fayl_name;

Tajriba uchun men ushbu parametrdan 143 MB MySQL ma'lumotlar bazasini o'chirish uchun foydalandim. Keyingi tiklash 59 soniya vaqtni oldi, ma'lumotlar bazasi maxsus parametrlarsiz mysqldump-ga qo'ng'iroq qilish orqali qilingan dumpdan tiklanganida 1 daqiqa 3 soniya.

Men bu arzimas narsa ekanligiga qo'shilaman. Ammo bu faqat ma'lum miqdordagi ma'lumotlarga tegishli. Agar siz ushbu texnikani 1 Gb dan kattaroq axlatxonani yaratishda ishlatsangiz, farq yanada sezilarli bo'ladi.

Agar siz bunday vaziyatga duch kelsangiz, avval MySQL ma'lumotlar bazasini arxivga to'plashni unutmang. tar.gz eng yaxshisidir. Keyin tiklanish hatto kamroq vaqtni oladi.

MySQL-dan Excel va csv fayllariga ma'lumotlarni eksport qiling

MySQL-dan ma'lumotlarning chiqishi haqidagi ma'lumotlarni ushbu ikkita formatga bitta blokda birlashtirganim bejiz emas edi, chunki ular juda o'xshash, ular taxminan bir xil tarzda qo'llaniladi (jadvallar ko'rinishidagi ma'lumotni tuzish uchun) va eksport uchun bir xil buyruqlar chaqiriladi.

Ma'lumki, bu formatlar o'rtasidagi yagona muhim farq shundaki, xls va xlsx kengaytmalarida Microsoft Office Excel-da yaratilgan fayllar mavjud bo'lib, ular faqat Windows ostida ishlaydi, csv fayllari esa universalroq va ular bilan operatsiyalar ko'plab tahrirlovchilarda mumkin.

Bu xls Microsoft Office Exceldan boshqa joyda ochilmaydi degani emas. Xuddi shu OpenOffice buning aksini tasdiqlaydi.

Ammo bu imkoniyat uchun ushbu qo'llab-quvvatlash dasturiy mahsulotda mavjud bo'lishi kerak. csv fayllarini hatto Notepad kabi oddiy matn muharririda ham o'qish mumkin, faqat ushbu shaklni to'liq o'qib bo'lmaydi.

Boshlash uchun siz faqat SQL so'rovlari natijalarini xls yoki csv ga eksport qilishingiz mumkin, biz avvalroq ishlashni o'rgandik, chunki. butun ma'lumotlar bazasini bitta faylga bir amalda ko'rsatish mumkin bo'lmaydi.

Birinchidan, bu optimal emas, chunki ma'lumotlar bazasida saqlangan katta hajmdagi ma'lumotlar bilan bunday faylni ochish ehtimoli yo'q. Va, ikkinchidan, ma'lumotni fayl ichidagi jadvallar va maydonlarga qanday ajratish aniq emas.

Yo'q, albatta, buni qilish mumkin, lekin bitta buyruq buni amalga oshirishi dargumon va umuman konsolda buni hech kim qilish dargumon. Menimcha, bu maqsadlar uchun sizga maxsus dasturiy ta'minot yoki hech bo'lmaganda skript kerak bo'ladi.

Agar siz to'satdan butun MySQL ma'lumotlar bazasidan bir vaqtning o'zida konsoldagi bir yoki bir nechta xls fayllariga ma'lumotni qanday eksport qilishingiz mumkinligini bilsangiz, bu haqda sharhlarda yozing. O'ylaymanki, bu haqda o'qish ko'pchilik uchun foydali bo'ladi.

Shunday qilib, agar biz MySQL-dan xls va csv-ga ma'lumotlarni qanday eksport qilish haqida gapiradigan bo'lsak, uni yordam dasturi orqali to'g'ridan-to'g'ri server konsolida qilishingiz mumkin. mysql yoki oldingi maqolamda sizni tanishtirgan ishim.

Keling, tartibda boshlaylik.

MySQL ma'lumotlar bazasidan ma'lumotlarni csv va xls formatlariga to'g'ridan-to'g'ri server konsolida quyidagi buyruqlar yordamida eksport qilishingiz mumkin.

Yoniq linux tizimlari:

Mysql -u foydalanuvchi nomi -d dbname -p -e "SELECT * FROM dbtable;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. csv

Aslida, agar kerak bo'lsa, MySQL ma'lumotlarini Excel fayliga eksport qilish uchun ushbu buyruqdan foydalanishingiz mumkin. Ammo, rostini aytsam, men amalda ma'lumotlar bilan shug'ullanmadim va oxir-oqibat nima bo'ladi - hech qanday tasavvurga ega emasman, chunki. Men hozir Windows ostida ishlayman. Agar siz ushbu buyruqni Linux ostida ishlatsangiz, iltimos, ishingiz natijalari haqida sharhlarda yozing. O'ylaymanki, ma'lumotlar hamma uchun qiziqarli bo'ladi.

Yoniq Windows:

MySQL jadvallaridan yuqoridagi buyruq bilan ma'lumotlarni csv ga eksport qilish, afsuski, bu holatda muvaffaqiyat qozonmaydi, chunki Windows, Linuxdan farqli o'laroq, Linuxda sed bo'lgan oqimlar bilan ishlash uchun o'rnatilgan konsol buyrug'iga ega emas.

O'rnatish, albatta, mumkin, lekin juda ko'p muammo. Shu bilan bir qatorda, siz ham foydalanishingiz mumkin CygWin Windows tizimlari uchun Linux konsoli emulyatoridir.

Xo'sh, agar sizda allaqachon o'rnatilgan bo'lsa. Aks holda, MySQL ma'lumotlar bazasidan ma'lumotlarni tanlangan usulda eksport qilish bizga juda ko'p muammo keltiradi.

Ammo xls fayliga ma'lumot olish 5 tiyin kabi oson 🙂 Uni shaxsan o'zim sinab ko'rgan quyidagi tarzda ishlatish juda oson:

Mysql -u foydalanuvchi nomi -d dbname -p -e "SELECT * FROM dbtable;" > path_va_file_name.xls

Ushbu fayl Microsoft Office Excel-da hech qanday muammosiz ochildi. Bitta narsa shundaki, ochilganda, ochilayotgan faylning haqiqiy formati ko'rsatilgan kengaytmadan farq qilishi haqida ogohlantiruvchi xabar paydo bo'ldi.

Ammo harakatni tasdiqlashda hujjat qiyinchiliksiz ochildi - barcha ma'lumotlar jadvalning o'zida saqlangan shakldagi hujayralarga bo'lingan.

Bilmayman, ehtimol, Microsoft Office Excel-da biron bir aniq amalni bajarayotganda, kelajakda muammolar paydo bo'ladi, men unchalik chuqur qazmadim. Ma'lumotlarning odatiy ko'rinishida, hech bo'lmaganda, men g'ayrioddiy narsaga duch kelmadim.

MySQL-dan eksport qilingan xls faylidan foydalanish jarayonida ushbu dasturda yoki boshqalarda biron bir muammoga duch kelsangiz, sharhlarda menga xabar bering.

Yuqorida ta'riflangan tarzda, MySQL ma'lumotlar bazasi tarkibini printsipial ravishda csv fayliga eksport qilishingiz mumkin. Ammo keyin jadvalning turli sohalaridagi ma'lumotlar ommaviy ravishda, ajratuvchilarsiz yoziladi, ular odatda csv fayllari bilan ishlaydigan jadvallar bilan ishlash uchun turli dasturlarda yomon ko'rsatilishi mumkin.

Aytgancha, OpenOffice parvo qilmaydi 🙂 U MySQL ma'lumotlar bazasi tarkibini xls-ga eksport qilish orqali olingan ma'lumotlarni avtomatik ravishda ajratib turdi. U buni qanday qilishini bilmayman - lekin men undan foydalanishni maslahat beraman 🙂

Xo'sh, xuddi shu Microsoft Office Excel jadvaldagi bitta yozuvga mos keladigan barcha ma'lumotlarni ko'rsatdi va uni hech qanday ajratuvchisiz bitta katakka yozdi. Boshqa elektron jadval muharrirlari ham shunday qiladi deb o'ylayman.

Shuning uchun, MySQL ma'lumotlar bazasini csv fayllariga eksport qilishda siz buni ma'lumotlarni tahrirlovchilar tomonidan qabul qilingan maxsus belgilar bilan ajratish orqali qilishingiz kerak.

Va bu erda men MySQL ma'lumotlarini csv va xls ga eksport qilishning ikkinchi usuliga muammosiz yaqinlashdim, ya'ni MySQL buyruq qatoridan foydalanish.

Shunday qilib, MySQL ma'lumotlarini csv fayliga shu tarzda eksport qilish uchun bizga quyidagi buyruq kerak bo'ladi:

* FROM ma'lumotlar bazasi_jadvalidan OUTFILE "path_and_file_name.csv" O'ZBEKISTON IQTISODIYoTI "," BILAN TUG'ALANGAN """ SATIRLAR BILAN "\n" BILAN TO'XTALANGAN MAYDOLLARNI TANlang;

Uning bajarilishi natijasida siz qo'ng'iroq qilayotganda ko'rsatgan yo'lda csv faylini olasiz, bu ko'pgina zamonaviy elektron jadval muharrirlarida to'g'ri ochiladi. Har holda, ushbu buyruqni faqat MySQL ma'lumotlar bazasiga ulangandan so'ng bajarish kerakligini eslatib o'taman.

Ushbu buyruq, shuningdek, Microsoft Office Excel dasturida to'g'ri ko'rsatish uchun MySQL ma'lumotlarini xls fayliga eksport qilish uchun juda yaxshi. Faqat bu holda, biz ajratuvchilar kerak emas, chunki ular ma'lumotlarning hujayralarga bo'linishiga xalaqit beradi:

TANLOV * ma'lumotlar bazasi_jadvalidan OUTFILE INTO "path_and_file_name.xls";

Biroq, amalda hamma narsa men ta'riflaganimdek oddiy emas. Buyruqni bajarish paytida konsolda eksportni yakunlashga xalaqit beradigan quyidagi xatolikka duch kelishingiz mumkin:

XATO 1290 (HY000): MySQL serveri --secure-file-priv opsiyasi bilan ishlamoqda, shuning uchun u ushbu bayonotni bajara olmaydi

Buning sababi MySQL serveringiz variant bilan ishga tushirilgan --secure-file-priv. Shaxsan men bu muammoga konsolda ishlash uchun WAMP OpenServer to'plamiga kiritilgan MySQL tarqatish to'plamidan foydalanganim sababli duch keldim, bu esa o'z navbatida MySQL serverini shu tarzda ishga tushiradi.

Bu erda muammoni hal qilishning ikki yo'li mavjud:

  • MySQL serverini ishga tushirish parametrlarini o'zgartiring
  • Belgilangan MySQL eksport fayliga yo'lni o'zgartiring

Birinchi usul menga juda murakkab tuyuldi, chunki. Men barcha holatlar bilan yozilmagan OpenServer konfiguratsiyasini qazishim kerak edi 🙂 Shuning uchun men ikkinchi yo'ldan borishga qaror qildim. Agar shunga o'xshash muammoga duch kelsangiz, mendan keyin takrorlang.

Avval MySQL buyruq satriga o'tishingiz va quyidagi buyruqlardan birini ishga tushirishingiz kerak:

"secure_file_priv" kabi o'zgaruvchilarni ko'rsatish; SELECT @@GLOBAL.secure_file_priv;

Ikkalasini bajarish natijasi MySQL global o'zgaruvchisining qiymati bo'ladi xavfsiz_fayl_priv, bu MySQL ma'lumotlarini eksport qilish va import qilish operatsiyalarini bajarish mumkin bo'lgan katalogga yo'lni o'z ichiga oladi (kelajakda ma'lumotlarni import qilish bo'yicha maqolaga havola).

Bular. buyruqlardan foydalanganda MA'LUMOTLARI YUKLASH Va TANLASH … OUTFILE eksport qilingan va import qilingan fayllar faqat ushbu katalog ichida joylashgan bo'lishi mumkin.

Mening holatimda, bu o'zgaruvchida umuman o'rnatilgan qiymat bor edi NULL, chunki Men, yuqorida aytib o'tganimdek, konsolda ishlash uchun OpenServer-ga kiritilgan tarqatishdagi MySQL yordam dasturlaridan foydalanaman. Bu qiymat belgilangan buyruqlar yordamida MySQL ma'lumotlarini eksport qilish va import qilish operatsiyalari butunlay yopilganligini ko'rsatdi.

Keyinchalik ma'lum bo'lishicha, bu qutidagi WAMP va MAMP serverlaridan foydalanishda odatiy holdir.

Afsuski, mening holatimda MySQL global o'zgaruvchilari qiymatlarini o'zgartirishning odatiy usullaridan foydalanish mumkin emas edi:

SET o'zgaruvchi_nomi = qiymat;

Natijada, men konsolda faqat quyidagi xatoni ko'rdim:

1-qatordagi XATO 1238 (HY000): "secure_file_priv" o'zgaruvchisi faqat o'qiladigan o'zgaruvchidir.

Nihoyat, o'zgaruvchining qiymatini o'zgartirish uchun xavfsiz_fayl_priv va eksport va import operatsiyalarini oching, men MySQL tarqatishning ildiz katalogida joylashgan mysql.ini MySQL konfiguratsiya fayliga kirishim kerak edi yoki MySQL WAMP/LAMP/ bilan birga bo'lsa, boshqa yo'l bilan kirish mumkin. MAMP serverini qurish.

Aytgancha, agar siz fayl almashinuvi bufer katalogiga yo'lni o'zgartirmoqchi bo'lsangiz, xuddi shunday qilishingiz kerak bo'ladi.

Mening holatimda, bu o'zgaruvchi allaqachon konfiguratsiyada mavjud edi, faqat sharhlangan shaklda:

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

Agar sizda yo'q bo'lsa, uni bo'limda noldan yozing (hech bo'lmaganda, men u erda joylashganman).

Men uni izohdan chiqarib tashladim va uni yozilgan shaklda ishlatishga qaror qildim. Bular. MySQL-dan ma'lumotlarni eksport qilish va ularni qayta import qilishda mening fayllarim endi katalogda saqlanadi c:\openserver\userdata\temp\.

Konfiguratsiyani o'zgartirgandan so'ng (har qanday, aytmoqchi), o'zgarishlar kuchga kirishi uchun, agar iloji bo'lsa, sozlamalarini tuzatgan serveringizni yoki alohida xizmatni qayta ishga tushirishni unutmang!

Ishonch hosil qilish uchun, MySQL serverini qayta ishga tushirgandan so'ng, o'zgaruvchini yana bir marta ko'rsating xavfsiz_fayl_priv va uning qiymatini clipboardga nusxalash.

Va endi biz buyruqni chaqirishimiz kerak, boshida bo'lgani kabi, faqat MySQL ma'lumotlar bazasidan ma'lumot saqlanadigan fayl nomidan oldin, biz o'zgartirayotgan o'zgaruvchida saqlangan yo'lni quyidagi shaklda yozing:

TANLOV * ma'lumotlar bazasi_jadvalidan OUTFILE INTO "value_secure_file_priv\file_name.csv";

Shundan so'ng, MySQL-dan ma'lumotlarni eksport qilish mening ishimda ishladi.

Muhim nuqta! Agar siz Windows ostida MySQL bilan ishlayotgan bo'lsangiz, faylga yo'lni belgilashda "\" ni "/" ga o'zgartirishni unutmang, aks holda xato. --secure-file-priv baribir namoyon bo'lishda davom etadi.

MySQL ma'lumotlar bazasini va uning jadvallarini qanday tashlash, shuningdek, MySQL jadvallaridan ma'lumotlarni turli formatlarga chiqarish bo'yicha ushbu maqola nihoyasiga etadi. Fikr-mulohazalaringizni sharhlarda yozing va amalda tez-tez foydalanadigan barcha skript variantlari bilan o'rtoqlashing.

Agar sizga maqola yoqqan bo'lsa, maqolani ijtimoiy tarmoqlarda qayta joylashtirish yoki quyidagi shakldan moliyaviy foydalanish orqali muallifga minnatdorchilik bildirishingiz mumkin, shunda hosting uchun pul to'lashingiz mumkin.

Hammaga omad va tez orada ko'rishguncha! 🙂

P.S.: agar sizga veb-sayt kerak bo'lsa yoki mavjud veb-saytga o'zgartirishlar kiritishingiz kerak bo'lsa, lekin bunga vaqt va xohish bo'lmasa, men o'z xizmatlarimni taklif qila olaman.

5 yildan ortiq tajriba professional veb-saytlarni ishlab chiqish. Bilan ishlash PHP

Maqola yoqdimi? Do'stlaringizga ulashing: