2.3.Ma'lumotlarni MySQL-dan Excel va CSV fayllariga eksport qilish
Men MySQL-dan ushbu ikkita formatga ma'lumotlarni bitta blokda chiqarish haqida ma'lumotni birlashtirganim bejiz emas ular juda o'xshash, ular xuddi shu tarzda ishlatiladi (jadvallar ko'rinishidagi ma'lumotlarni tuzish uchun) va eksport uchun buyruqlar bir xil deb nomlanadi.Ma'lumki, ushbu formatlarning birdan bir muhim farqi shundaki, xls va xlsx kengaytmalarida Microsoft Office Excel dasturida yaratilgan fayllar mavjud bo'lib, ular faqat Windows ostida ishlaydi va CSV fayllari ko'proq universal bo'lib, ular bilan operatsiyalar ko'p muharrirlarda mumkin.Bu xls Microsoft Office Exceldan boshqa joyda ochilmaydi degani emas. Xuddi shu OpenOffice buning aksini tasdiqlaydi.Ammo bunday imkoniyat uchun ushbu qo'llab-quvvatlash dasturiy mahsulotda bo'lishi kerak. CSV fayllari bloknot kabi oddiy matn muharririda ham o'qilishi mumkin, faqat ushbu shakl to'liq o'qilmaydi.Boshlash uchun siz xls yoki CSV-ga faqat avval ishlashni o'rgangan SQL so'rovlari natijalarini eksport qilishingiz mumkin. bitta operatsiya davomida barcha ma'lumotlar bazasini bitta faylga tashlash imkonsiz bo'ladi.Birinchidan, bu maqbul emas, chunki bunday fayl ma'lumotlar bazasida saqlangan katta hajmdagi ma'lumotlar bilan ochilishi ehtimoldan yiroq emas. Va, ikkinchidan, fayl ichidagi jadvallarga va maydonlarga ma'lumotlarni qanday ajratish kerakligi aniq emas.Yo'q, albatta, buni amalga oshirish mumkin, lekin buni bitta buyruq bilan bajarish ehtimoldan yiroq emas va umuman kimdir buni konsolda bajarishi ehtimoldan yiroq emas. O'ylaymanki, ushbu maqsadlar uchun sizga maxsus dasturiy ta'minot yoki hech bo'lmaganda skript kerak.Agar siz kutilmaganda butun MySQL ma'lumotlar bazasidan qanday qilib bir yoki bir nechta konsoldagi xls fayllariga ma'lumotlarni eksport qilish mumkinligini bilsangiz, bu haqda sharhlaringizga 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, bu to'g'ridan-to'g'ri yordam dasturi orqali server konsolida amalga oshirilishi mumkin mysql yoki oldingi maqolamda sizni tanishtirgan ishda.
Siz quyidagi buyruqlar yordamida MySQL ma'lumotlar bazasidan to'g'ridan-to'g'ri server konsolida ma'lumotlarni CSV va xls formatlariga eksport qilishingiz mumkin.Yoqilgan Linux tizimlar:
Mysql -u foydalanuvchi nomi -d dbname -p -e "SELECT * FROM dbtable;" | sed "s /" / \\ "/; s / \\ t / \\", \\ "/ g; s / ^ / \\" /; s / $ / \\ "/; s / \\ n // g"\u003e path_and_file_name. CSV
Printsipial jihatdan, agar kerak bo'lsa, MySQL ma'lumotlarini Excel fayliga eksport qilish uchun ushbu buyruqdan foydalanishingiz mumkin. Ammo, rostini aytganda, men amalda ma'lumotlar bilan shug'ullanmaganman va oxirida nima bo'lishini bilmayman. Men hozir Windows ostida ishlayman. Agar siz ushbu buyruqni Linux ostida ishlatsangiz - izohlarda yozing, iltimos, o'zingizning ishingiz natijalari haqida yozing. O'ylaymanki, ma'lumot hamma uchun qiziqarli bo'ladi.
Yoqilgan Windows:
Afsuski, bu holda yuqoridagi buyruq bilan MySQL jadvallaridan CSV-ga ma'lumotlarni eksport qilish muvaffaqiyatsiz bo'ladi, chunki Windows-da, Linuxdan farqli o'laroq, Linux-dagi sed singari oqimlar bilan ishlash uchun ichki konsol buyrug'i mavjud emas. O'rnatish, albatta, mumkin, lekin juda ko'p muammo. Shu bilan bir qatorda, foydalanishingiz mumkin CygWin - Windows tizimlari uchun Linux konsol emulyatori. Agar u allaqachon o'rnatilgan bo'lsa yaxshi bo'ladi. Aks holda, tanlangan usul yordamida MySQL ma'lumotlar bazasidan ma'lumotlarni eksport qilish bizni juda ko'p muammolarga olib keladi. Ammo xls fayliga ma'lumot olish 5 kopekka o'xshaydi.Uni quyidagi tarzda ishga tushirish juda oddiy, men shaxsan o'zim sinab ko'rdim:
Mysql -u foydalanuvchi nomi -d dbname -p -e "SELECT * FROM dbtable;" \u003e path_and_file_name.xls
Ushbu fayl Microsoft Office Excel-da hech qanday muammosiz ochilgan. Faqat bitta narsa shundaki, siz uni ochganingizda, ochilgan faylning haqiqiy formati uning ko'rsatilgan kengaytmasidan farq qilishi to'g'risida ogohlantiruvchi xabar paydo bo'ldi.Ammo harakatni tasdiqlashda hujjat qiyinchiliksiz ochildi - barcha ma'lumotlar jadvalning o'zida saqlangan shaklidagi katakchalarga bo'lindi.Bilmayman, ehtimol, Microsoft Office Excel-da biron bir aniq harakatlarni amalga oshirishda, kelajakda muammolar paydo bo'lishi mumkin, men bunchalik chuqur qazilmagandim. Hech bo'lmaganda, odatdagi ma'lumotlarni ko'rish paytida g'ayrioddiy narsalarga duch kelmadim.Agar MySQL-dan eksport qilingan xls faylidan foydalanish jarayonida siz ushbu dasturda yoki boshqalarda biron bir muammoga duch kelsangiz, iltimos, izohlarda menga xabar bering.Yuqorida tavsiflanganidek, siz MySQL ma'lumotlar bazasi tarkibini, asosan, CSV fayliga eksport qilishingiz mumkin. Ammo keyinchalik jadvalning turli sohalaridagi ma'lumotlar ommaviy ravishda, ajratuvchisiz yoziladi, ular odatda CSV fayllari bilan ishlaydigan jadvallar bilan ishlash uchun turli dasturlarda yomon ko'rsatilishi mumkin.OpenOffice, aytmoqchi, muhim emas doesn't Bu MySQL ma'lumotlar bazasi tarkibini xls-ga eksport qilish usuli bilan olingan ma'lumotlarni avtomatik ravishda chegaralaydi. U buni qanday amalga oshirayotganini bilmayman - lekin dan foydalanishni maslahat beraman.Xuddi shu Microsoft Office Excel jadvaldagi bitta yozuvga mos keladigan barcha ma'lumotlarni namoyish qildi, ularni hech qanday ajratuvchisiz bitta katakka yozib qo'ydi. O'ylaymanki, boshqa elektron jadval muharrirlari ham shunday qilishadi.Shuning uchun, MySQL ma'lumotlar bazasini CSV fayllariga eksport qilishda, buni muharrirlar tomonidan qabul qilinadigan maxsus belgilar bilan ajratib qo'yishingiz kerak.Va keyin men MySQL ma'lumotlarini csv va xls-ga eksport qilishning ikkinchi usuliga, ya'ni MySQL buyruq satridan foydalanishga kirishdim.Shunday qilib, MySQL ma'lumotlarini CSV fayliga shu tarzda eksport qilish uchun bizga quyidagi buyruq kerak:
Db_table-dan "OUTFILE-ga" "yo'lni tanlang va tanlang", "QABUL QILINGAN" "" QATLASH TARMOQLARI "\\ n";
Uning bajarilishi natijasida siz qo'ng'iroq paytida siz ko'rsatgan yo'l bo'ylab CSV faylini olasiz, u zamonaviy elektron jadval muharrirlarida to'g'ri ochiladi. Ehtimol, sizga ushbu buyruqni faqat MySQL ma'lumotlar bazasiga ulangandan so'ng ishga tushirish kerakligini eslatib qo'yaman.Ushbu buyruq Microsoft Office Excel-da to'g'ri namoyish qilish uchun MySQL ma'lumotlarini xls fayliga eksport qilish uchun juda yaxshi. Faqatgina bu holatda bizga ajratgichlar kerak emas, chunki ular ma'lumotni hujayralarga ajratishga xalaqit beradi:
SELECT * FROM db_table INTO OUTFILE "path_and_file_name.xls";
Biroq, amalda hamma ham men ta'riflaganchalik sodda emas. Buyruqni bajarayotganda eksportni amalga oshirishga xalaqit beradigan konsolda quyidagi xatolarga duch kelishingiz mumkin:
ERROR 1290 (HY000): MySQL-server -secure-file-priv opsiyasi bilan ishlaydi, shuning uchun u ushbu bayonotni bajara olmaydi.Bunga MySQL-serveringiz parametr bilan boshlanganligi sabab bo'ladi —Secure-file-priv... Shaxsan men konsolda ishlash uchun WAMP OpenServer to'plamiga kiritilgan MySQL tarqatish to'plamidan foydalanganim sababli bu muammoga duch keldim, bu esa o'z navbatida MySQL serverini shu tarzda ishga tushiradi.
Bu erda muammoni hal qilishning ikkita usuli mavjud:
MySQL-serverni ishga tushirish parametrlarini o'zgartiring
Belgilangan MySQL eksport fayliga yo'lni o'zgartiring
Birinchi usul menga juda murakkab bo'lib tuyuldi, chunki Men keyingi barcha holatlar bilan men yozmagan OpenServer konfiguratsiyasini o'rganib chiqishim kerak edi Shuning uchun men ikkinchi yo'lga borishga qaror qildim. Agar shunga o'xshash muammoga duch kelsangiz - mendan keyin takrorlang.Birinchidan, siz MySQL buyruq satriga o'tishingiz va quyidagi buyruqlardan birini bajarishingiz kerak:
"Safe_file_priv" kabi o'zgaruvchilarni ko'rsatish; SELECT @@ GLOBAL.secure_file_priv;
Ikkalasi ham MySQL global o'zgaruvchisi qiymatiga olib keladi xavfsiz_file_priv, bu MySQL ma'lumotlarini eksport qilish va import qilish operatsiyalari amalga oshiriladigan katalogga yo'lni o'z ichiga oladi (kelajakda ma'lumotlarni import qilish haqidagi maqolaga havola).O'sha. buyruqlardan foydalanganda Ma'lumotlarni yuklash va SELECT… OUTFILE eksport qilingan va import qilingan fayllar faqat shu katalog ichida joylashgan bo'lishi mumkin.Mening vaziyatimda ushbu o'zgaruvchi odatda o'rnatildi NULLberi Yuqorida aytib o'tganimizdek, men konsolda ishlash uchun OpenServer-ga kiritilgan tarqatish to'plamidan MySQL yordam dasturlarini ishlataman. Ushbu qiymat belgilangan buyruqlar yordamida MySQL eksport va import operatsiyalari umuman yopilganligini ko'rsatdi.Keyinchalik ma'lum bo'lishicha, bu qutidagi WAMP va MAMP serverlaridan foydalanishda odatiy holat.Afsuski, mening ishimda MySQL global o'zgaruvchilar qiymatlarini o'zgartirishning odatiy usullaridan foydalanish mumkin emas edi:
SET o'zgaruvchisi_name \u003d qiymat;
Natijada, men konsolda faqat quyidagi xatoni ko'rdim:
1-satrda ERROR 1238 (HY000): "safe_file_priv" o'zgaruvchisi faqat o'qiladigan o'zgaruvchidir.
Oxirida o'zgaruvchining qiymatini o'zgartirish uchun xavfsiz_file_priv va eksport va import operatsiyalarini oching, men MySQL tarqatishining ildiz katalogida joylashgan MySQL konfiguratsiya fayliga murojaat qilishim kerak edi, yoki MySQL sizning WAMP / LAMP / MAMP server qurish paketiga kiritilgan bo'lsa, unga boshqa usul bilan kirish mumkin.Aytgancha, fayl almashish buferiga yo'lni o'zgartirmoqchi bo'lsangiz, xuddi shunday qilishingiz kerak bo'ladi.Menimcha, ushbu o'zgaruvchi konfiguratsiyada allaqachon mavjud edi, faqat sharhlangan shaklda:
Secure-file-priv \u003d "% dprogdir% \\\\ userdata \\\\ temp"
Agar sizda yo'q bo'lsa, unda bo'limga noldan yozing (hech bo'lmaganda men u erda joylashgan edim).Men buni sharhlamadim va uni yozilgan shaklda ishlatishga qaror qildim. O'sha. ma'lumotlarni MySQL-dan eksport qilishda va uni qaytarib olib kirishda endi mening fayllarim katalogda saqlanadi c: \\ openserver \\ userdata \\ temp \\.
Konfiguratsiyani o'zgartirgandan so'ng (har qanday, aytmoqchi), serveringiz yoki sozlamalari tahrir qilgan alohida xizmatni qayta ishga tushirishni unutmang, agar o'zgarishlar kuchga kirishi uchun bunday imkoniyat bo'lsa!Ishonchim komilki, MySQL-serverni qayta ishga tushirgandan so'ng, yana bir bor o'zgaruvchini ko'rsating xavfsiz_file_priv va uning qiymatini buferga nusxalash.Va endi biz buyruqni chaqirishimiz kerak, xuddi boshida bo'lgani kabi, MySQL ma'lumotlar bazasidan ma'lumotlar saqlanadigan fayl nomidan oldin, biz o'zgartirayotgan o'zgaruvchida saqlanadigan yo'lni quyidagi shaklda yozing:
SELECT * FROM db_table INTO OUTFILE "value_secure_file_priv \\ filename.csv";
Shundan so'ng, MySQL-dan ma'lumotlarni eksport qilish mening ishimda ishladi. Muhim nuqta! Agar siz Windows ostida MySQL bilan ishlasangiz, fayl yo'lini ko'rsatishda "\\" ga "/" ga o'zgartirishni unutmang, aks holda —Secure-file-priv baribir namoyish etishda davom etadi. Shu bilan MySQL ma'lumotlar bazasini va uning jadvallarini qanday tashlab yuborish, shuningdek MySQL jadvallaridan ma'lumotlarni turli formatlarga chiqarish haqida maqola tugaydi. Fikrlaringizni sharhlaringizga yozing va amalda eng ko'p ishlatiladigan barcha skriptlaringiz bilan o'rtoqlashing.Agar sizga maqola yoqqan bo'lsa, siz xosting uchun boshlang'ich to'lovni amalga oshirishingiz uchun muallifga ijtimoiy tarmoqdagi sahifasini qayta joylashtirib yoki quyidagi shakl yordamida moliyaviy jihatdan minnatdorchilik bildirishingiz mumkin. Barchaga omad tilayman va tez orada ko'rishguncha!
Do'stlaringiz bilan baham: |