logo

تصدير جدول MySQL إلى CSV

يحتوي MySQL على ميزة تصدير جدول إلى ملف CSV. تنسيق ملف CSV هو قيمة مفصولة بفواصل نستخدمها لتبادل البيانات بين التطبيقات المختلفة مثل Microsoft Excel وGoole Docs وOpen Office. من المفيد أن تكون بيانات MySQL بتنسيق ملف CSV مما يسمح لنا بتحليلها وتنسيقها بالطريقة التي نريدها. إنه ملف نص عادي يساعدنا على تصدير البيانات بسهولة بالغة.

ماي إس كيو إل يوفر طريقة سهلة لتصدير أي جدول إلى ملفات CSV الموجودة في خادم قاعدة البيانات. يجب علينا التأكد من الأمور التالية قبل تصدير بيانات MySQL:

  • تتمتع عملية خادم MySQL بحق الوصول للقراءة/الكتابة إلى المجلد (الهدف) المحدد، والذي يحتوي على ملف CSV.
  • يجب ألا يكون ملف CSV المحدد موجودًا في النظام.

لتصدير الجدول إلى ملف CSV، سوف نستخدم الملف اختر في....الملف الخارجي إفادة. هذا البيان هو مجاملة ل تحميل البيانات الأمر، الذي يُستخدم لكتابة البيانات من جدول ثم تصديرها إلى تنسيق ملف محدد على مضيف الخادم. إنه للتأكد من أن لدينا امتياز ملف لاستخدام بناء الجملة هذا.

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

يمكننا أيضًا استخدام بناء الجملة هذا مع بيان القيم لتصدير البيانات مباشرة إلى ملف. والبيان التالي يوضح ذلك بشكل أوضح:

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

إذا أردنا التصدير كافة أعمدة الجدول ، سوف نستخدم بناء الجملة أدناه. مع هذا البيان، سيتم التحكم في ترتيب وعدد الصفوف من خلال ترتيب حسب و حد بند.

تحويل منطقية إلى سلسلة
 TABLE table_name ORDER BY lname LIMIT 1000 INTO OUTFILE '/path/filename.txt' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
';; 

من أعلى،

تم إنهاء الأسطر بواسطة ',' : يتم استخدامه للإشارة إلى أسطر الصفوف في الملف التي يتم إنهاؤها بواسطة عامل الفاصلة. يحتوي كل سطر على بيانات كل عمود في الملف.

الحقول المحاطة بـ ''' : يتم استخدامه لتحديد حقل الملف المحاط بعلامات اقتباس مزدوجة. يمنع القيم التي تحتوي على فواصل الفاصلة. إذا كانت القيم الموجودة في علامات الاقتباس المزدوجة، فلن يتم التعرف على الفاصلة كفاصل.

قاموس ج #

موقع تخزين الملف المصدر

يتم تخزين موقع تخزين كل ملف تم تصديره في MySQL في المتغير الافتراضي Secure_file_priv . يمكننا تنفيذ الأمر أدناه للحصول على المسار الافتراضي للملف الذي تم تصديره.

 mysql> SHOW VARIABLES LIKE 'secure_file_priv'; 

بعد التنفيذ سوف تعطي النتيجة كما يلي حيث يمكننا رؤية هذا المسار: ج:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ كموقع الملف الافتراضي. سيتم استخدام هذا المسار في وقت تشغيل أمر التصدير.

تصدير جدول MySQL إلى CSV

إذا أردنا تغيير موقع التصدير الافتراضي لملف CSV المحدد في ملف Secure_file_priv متغير، نحن بحاجة إلى تحرير my.ini ملف الضبط. على نظام التشغيل Windows، يوجد هذا الملف على هذا المسار: C:ProgramDataMySQLMySQL Server X.Y .

إذا أردنا تصدير بيانات MySQL، نحتاج أولاً إلى إنشاء ملف قاعدة البيانات مع واحد على الأقل طاولة . سنستخدم هذا الجدول كمثال.

يمكننا إنشاء قاعدة البيانات والجدول عن طريق تنفيذ الكود أدناه في المحررات التي نستخدمها:

 CREATE DATABASE testdb; USE testdb; CREATE TABLE employee_detail ( ID int NOT NULL AUTO_INCREMENT, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL, Phone varchar(15) DEFAULT NULL, City varchar(25) DEFAULT NULL, PRIMARY KEY (ID), UNIQUE KEY unique_email (Email), UNIQUE KEY index_name_phone (Name,Phone) ) INSERT INTO employee_detail ( Id, Name, Email, Phone, City) VALUES (1, 'Peter', '[email protected]', '49562959223', 'Texas'), (2, 'Suzi', '[email protected]', '70679834522', 'California'), (3, 'Joseph', '[email protected]', '09896765374', 'Alaska'), (4, 'Alex', '[email protected]', '97335737548', 'Los Angeles'), (5, 'Mark', '[email protected]', '78765645643', 'Washington'), (6, 'Stephen', '[email protected]', '986345793248', 'New York'); 

إذا قمنا بتنفيذ يختار البيان، سنرى الإخراج التالي:

تصدير جدول MySQL إلى CSV

قم بتصدير بيانات MySQL بتنسيق CSV باستخدام عبارة SELECT INTO... OUTFILE

لتصدير بيانات الجدول إلى ملف CSV، نحتاج إلى تنفيذ الاستعلام كما يلي:

 SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

سوف نحصل على الإخراج التالي، حيث يمكننا أن نرى أن ستة صفوف تتأثر. وذلك لأن الجدول المحدد يحتوي على ستة صفوف فقط.

تصدير جدول MySQL إلى CSV

إذا قمنا بتنفيذ نفس العبارة مرة أخرى، فسوف تنتج MySQL رسالة خطأ يمكن رؤيتها في الإخراج أدناه:

تصدير جدول MySQL إلى CSV

تخبرنا رسالة الخطأ أن اسم الملف المحدد موجود بالفعل في الموقع المحدد. وبالتالي، إذا قمنا بتصدير ملف CSV الجديد بنفس الاسم والموقع، فلا يمكن إنشاؤه. يمكننا حل هذه المشكلة إما بحذف الملف الموجود في الموقع المحدد أو إعادة تسمية اسم الملف لإنشائه في نفس المكان.

يمكننا التحقق من ملف CSV الذي تم إنشاؤه في الموقع المحدد أم لا عن طريق الانتقال إلى مسار معين كما يلي:

سلسلة فرعية في باش
تصدير جدول MySQL إلى CSV

عندما نفتح هذا الملف سيظهر كما في الصورة التالية:

تصدير جدول MySQL إلى CSV

في الصورة، يمكننا أن نرى أن الحقول الرقمية موجودة بين علامات الاقتباس. يمكننا تغيير هذا النمط بإضافة عبارة اختيارية قبل ENCLOSED BY :

 SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY '
'; 

تصدير البيانات مع عنوان العمود

في بعض الأحيان نرغب في تصدير البيانات مع عناوين الأعمدة التي تجعل الملف مناسبًا. يكون الملف الذي تم تصديره أكثر قابلية للفهم إذا كان السطر الأول من ملف CSV يحتوي على عناوين الأعمدة. يمكننا إضافة عناوين الأعمدة باستخدام الاتحاد الكل البيان على النحو التالي:

 SELECT 'Id', 'Name', 'Email', 'Phone', 'City' UNION ALL SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ';' ENCLOSED BY ''' ESCAPED BY ''' LINES TERMINATED BY '
'; 

في هذا الاستعلام، يمكننا أن نرى أننا أضفنا عنوانًا لكل اسم عمود. يمكننا التحقق من الإخراج بالانتقال إلى عنوان URL المحدد حيث يحتوي السطر الأول على عنوان كل عمود:

ج رمز القيمة المطلقة
تصدير جدول MySQL إلى CSV

تصدير جدول MySQL بتنسيق CSV

يسمح لنا MySQL OUTFILE أيضًا بتصدير الجدول دون تحديد أي اسم عمود. يمكننا استخدام بناء الجملة أدناه لتصدير الجدول بتنسيق ملف CSV:

 TABLE employee_detail ORDER BY City LIMIT 1000 INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

إذا قمنا بتنفيذ البيان أعلاه، فإن أداة سطر الأوامر الخاصة بنا تنتج النتيجة التالية. وهذا يعني أن الجدول المحدد يحتوي على ستة صفوف، والتي تم تصديرها Staff_backup.csv ملف.

تصدير جدول MySQL إلى CSV

التعامل مع القيم الخالية

في بعض الأحيان تحتوي الحقول الموجودة في مجموعة النتائج على قيم NULL، ثم سيحتوي الملف الهدف (نوع الملف المُصدَّر) على N بدلاً من NULL. يمكننا حل هذه المشكلة عن طريق استبدال القيمة NULL بـ 'لا ينطبق (غير متاح)' باستخدام إذا كانت فارغة وظيفة. والبيان أدناه يوضح ذلك بشكل أكثر وضوحا:

 SELECT Name, Email, Phone, IFNULL(Phone, 'N/A') FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY '
'; 

تصدير الجدول إلى تنسيق CSV باستخدام MySQL Workbench

إذا لم نرغب في الوصول إلى خادم قاعدة البيانات لتصدير ملف CSV، فإن MySQL يوفر طريقة أخرى، أي استخدام MySQL Workbench. Workbench هي أداة واجهة المستخدم الرسومية للعمل مع قاعدة بيانات MySQL دون استخدام أداة سطر الأوامر. يسمح لنا بتصدير مجموعة نتائج البيان إلى تنسيق CSV في نظامنا المحلي. للقيام بذلك، علينا اتباع الخطوات التالية:

  • قم بتشغيل البيان/الاستعلام واحصل على مجموعة النتائج الخاصة به.
  • ثم، في لوحة النتائج، انقر فوق 'تصدير مجموعة السجلات إلى ملف خارجي' خيار. يتم استخدام مجموعة السجلات لمجموعة النتائج.
  • وأخيرا، سيتم عرض مربع حوار جديد. هنا، نحن بحاجة إلى توفير اسم الملف وتنسيقه. بعد ملئ التفاصيل اضغط على يحفظ زر. الصورة التالية توضح ذلك بشكل أوضح:
تصدير جدول MySQL إلى CSV

الآن يمكننا التحقق من النتيجة بالانتقال إلى المسار المحدد.