یکی از روشهای پرکاربرد برای برونبری دادهها از MySQL، ذخیره آنها در قالب CSV (Comma Separated Values) است.
این فرمت برای انتقال دادهها بین پایگاه دادهها، پردازش در اکسل و استفاده در سیستمهای دیگر بسیار مفید است.
در این راهنما، روشهای مختلف استخراج دادههای یک جدول MySQL به فایل CSV را بررسی میکنیم.
۱. روشهای خروجی گرفتن از جدول MySQL به فایل CSV
روش | مناسب برای | نیاز به دسترسی خاص |
---|---|---|
SELECT ... INTO OUTFILE | ذخیره مستقیم در فایل CSV | نیاز به دسترسی نوشتن روی سرور |
mysqldump | استخراج دادهها به فایل CSV از طریق خط فرمان | دسترسی به خط فرمان MySQL |
MySQL Workbench | استخراج دادهها به CSV از طریق رابط گرافیکی | بدون نیاز به کدنویسی |
LOAD DATA INFILE | بازیابی دادههای CSV در MySQL | نیاز به دسترسی خواندن فایل |
۲. خروجی گرفتن از جدول MySQL با SELECT ... INTO OUTFILE
این روش به شما امکان میدهد که دادههای یک جدول را مستقیماً به یک فایل CSV در سرور ذخیره کنید.
۲.۱. دستور SQL برای خروجی گرفتن به فایل CSV
SELECT * FROM orders
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
🔹 توضیح دستورات:
INTO OUTFILE
→ دادهها را در یک فایل ذخیره میکند.FIELDS TERMINATED BY ','
→ تعیین میکند که فیلدها با,
(ویرگول) از هم جدا شوند.ENCLOSED BY '"'
→ مقادیر داخل “ قرار میگیرند تا در صورت وجود ویرگول در مقدار، خواندن داده دچار مشکل نشود.LINES TERMINATED BY '\n'
→ هر سطر در فایل CSV با یک خط جدید خاتمه مییابد.
✅ نتیجه: یک فایل CSV حاوی دادههای جدول orders در مسیر /var/lib/mysql-files/orders.csv
ایجاد خواهد شد.
۲.۲. تنظیمات و دسترسی مورد نیاز
🔹 ممکن است هنگام اجرای این دستور با خطای “The MySQL server is running with the –secure-file-priv option” مواجه شوید.
✅ برای بررسی مقدار secure_file_priv
، دستور زیر را اجرا کنید:
SHOW VARIABLES LIKE 'secure_file_priv';
✅ اگر مقدار آن null باشد، یعنی نمیتوانید از OUTFILE
استفاده کنید.
✅ اگر مسیر خاصی نمایش داده شود، فایل CSV باید در آن مسیر ذخیره شود.
🔹 رفع مشکل:
- مسیر امن را به
/var/lib/mysql-files/
تغییر دهید. - یا
secure-file-priv
را در تنظیمات MySQL غیرفعال کنید (برای مواردی که روی سرور لوکال کار میکنید).
۳. خروجی گرفتن از جدول MySQL با mysqldump
mysqldump
ابزاری برای گرفتن بکاپ از دادهها است که میتوان از آن برای خروجی گرفتن از جدول به CSV نیز استفاده کرد.
۳.۱. ذخیره جدول در CSV از طریق خط فرمان
mysqldump -u root -p --tab=/var/lib/mysql-files --fields-terminated-by=, --fields-enclosed-by='"' database_name table_name
🔹 ویژگیها:
- خروجی را در یک فایل CSV ذخیره میکند.
- نیاز به دسترسی به خط فرمان دارد.
- تمامی ستونها را شامل میشود.
۴. خروجی گرفتن از جدول MySQL به CSV با MySQL Workbench
🔹 این روش نیازی به کدنویسی ندارد و برای کاربران مبتدی بسیار مناسب است.
۴.۱. مراحل انجام کار در MySQL Workbench:
- Workbench را باز کنید و به پایگاه داده متصل شوید.
- روی جدول موردنظر راستکلیک کنید و گزینه “Table Data Export Wizard” را انتخاب کنید.
- فرمت خروجی را CSV انتخاب کنید.
- مسیر ذخیرهسازی فایل را مشخص کنید.
- روی Finish کلیک کنید تا فایل CSV تولید شود.
✅ نتیجه: فایل CSV با دادههای جدول در مسیر مشخصشده ایجاد خواهد شد.
۵. بازیابی دادههای CSV به MySQL با LOAD DATA INFILE
✅ اگر بخواهید یک فایل CSV را دوباره به MySQL وارد کنید، از این دستور استفاده کنید:
LOAD DATA INFILE '/var/lib/mysql-files/orders.csv'
INTO TABLE orders
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
🔹 ویژگیها:
- دادهها را مستقیماً از فایل CSV به جدول وارد میکند.
- نیاز به دسترسی خواندن فایل در سرور دارد.
✅ رفع مشکل “The MySQL server is running with the –secure-file-priv option”
- بررسی مقدار
secure_file_priv
SHOW VARIABLES LIKE 'secure_file_priv';
- اگر مقدار آن مسیر خاصی را نشان میدهد، فایل CSV باید در آن مسیر قرار گیرد.
۶. مقایسه روشهای خروجی گرفتن از جدول به CSV در MySQL
روش | مزایا | معایب |
---|---|---|
SELECT ... INTO OUTFILE | سریع، مستقیم در SQL | نیاز به دسترسی نوشتن روی سرور |
mysqldump | مناسب برای حجم بالا | نیاز به خط فرمان MySQL |
MySQL Workbench | آسان، بدون نیاز به کدنویسی | مناسب برای دادههای کم |
LOAD DATA INFILE | بازیابی سریع دادهها از CSV | نیاز به مجوز خواندن فایل |
۷. نکات مهم هنگام خروجی گرفتن از MySQL به CSV
✔ برای استفاده از OUTFILE
، بررسی کنید که مقدار secure_file_priv
مجاز باشد.
✔ در صورت نیاز به خروجیگیری سریع، mysqldump
گزینه مناسبی است.
✔ برای خروجی بدون نیاز به کدنویسی، MySQL Workbench گزینهای ساده و کارآمد است.
✔ برای خوانایی بهتر فایل CSV، از ENCLOSED BY '"'
استفاده کنید تا مقادیر متنی درست ذخیره شوند.
✔ در صورت نیاز به بازیابی دادهها، از LOAD DATA INFILE
برای وارد کردن CSV به MySQL استفاده کنید.
۸. نتیجهگیری
برونبری (Export) دادهها از MySQL به فایل CSV یکی از روشهای ساده و کاربردی برای ذخیره، انتقال و پردازش دادهها در سیستمهای دیگر است. بسته به نیاز خود، میتوانید از روشهای مختلفی مانند:
✅ SELECT ... INTO OUTFILE
برای ذخیره مستقیم دادهها در CSV
✅ mysqldump
برای خروجی گرفتن سریع از جداول بزرگ
✅ MySQL Workbench برای کاربران مبتدی که میخواهند بدون کدنویسی دادهها را به CSV استخراج کنند
💡 با انتخاب روش مناسب، میتوانید بهسادگی دادههای MySQL را به فایل CSV استخراج کرده و در نرمافزارهای دیگر استفاده کنید! 🚀