اکسپورت پایگاه داده در MySQL — به زبان ساده

۳۹۹ بازدید
آخرین به‌روزرسانی: ۱۸ شهریور ۱۴۰۲
زمان مطالعه: ۴ دقیقه
اکسپورت پایگاه داده در MySQL — به زبان ساده

ساده‌ترین روش برای اکسپورت کردن داده‌های جدول به صورت فایل متنی استفاده از گزاره SELECT...INTO OUTFILE است که نتایج یک کوئری را در یک فایل روی میزبان سرور اکسپورت می‌کند.

اکسپورت کردن داده‌ها با گزاره SELECT...INTO OUTFILE

ساختار این گزاره ترکیبی از یک دستور SELECT معمولی با INTO OUTFILE filename در انتهایش است. قالب خروجی پیش‌فرض همان است که برای دستور LOAD DATA استفاده می‌شود. بنابراین گزاره زیر جدول tutorials_tbl را در فایل /tmp/tutorials.txt به صورت یک فایل جدا شده با tab و خاتمه یافته با کاراکتر newline اکسپورت می‌کند.

mysql> SELECT * FROM tutorials_tbl 
   -> INTO OUTFILE '/tmp/tutorials.txt';

می‌توان قالب خروجی را با استفاده از گزینه‌های مختلف برای نمایش چگونگی نشانه‌گذاری و جداسازی ستون‌ها و رکوردها تغییر داد. برای اکسپورت کردن جدول tutorial_tbl در قالب CSV با خط‌های خاتمه یافته با CRLF، می‌توان از دستور زیر استفاده کرد:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
   -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
   -> LINES TERMINATED BY '\r\n';

گزاره SELECT ... INTO OUTFILE مشخصات زیر را دارد:

  • خروجی فایل به طور مستقیم از سوی سرور MySQL ساخته می‌شود و از این رو نام فایل باید نشان دهنده محلی باشد که فایل قرار است روی میزبان سرور نوشته شود. نسخه محلی از گزاره‌های مشابه Local برای LOAD DATA وجود ندارد.
  • شما باید مجوز MySQL FILE را برای اجرای گزاره SELECT ... INTO داشته باشید.
  • فایل خروجی باید از قبل وجود نداشته باشد. اگر چنین باشد MySQL در مورد کار با فایل‌هایی که ممکن است مهم باشند دچار مشکل می‌شود.
  • شما باید یک حساب ورود به میزبان سرور یا روش دیگری برای بازیابی فایل از میزبان داشته باشید. در غیر این صورت دستور SELECT ... INTO OUTFILE احتمالاً ارزشی برای شما نخواهد داشت.
  • در سیستم یونیکس، فایل به صورت world readable ایجاد می‌شود و تحت مالکیت سرور MySQL است. این بدان معنی است که گرچه ممکن است اجازه خواندن فایل را داشته باشید؛ اما نمی‌توانید آن را حذف کنید.

اکسپورت کردن جدول‌ها به صورت داده‌های خام

برنامه mysqldunp برای کپی یا پشتیبان‌گیری از پایگاه‌های داده استفاده می‌شود. این برنامه می‌تواند خروجی یک جدول را به صورت Raw Datafile با یک مجموعه از گزاره‌های INSERT بنویسد که در واقع رکوردها را در جدول بازنویسی می‌کند.

برای dump کردن یک datafile باید از گزینه tab-- استفاده کنید تا آن دایرکتوری که می‌خواهید سرور MySQL فایل را در آن بنویسد مشخص سازید. برای نمونه برای dump کردن جدول tutorials_tbl از پایگاه داده TUTORIALS در یک فایل در دایرکتوری tmp/ از دستور زیر استفاده می‌کنیم:

$ mysqldump -u root -p --no-create-info \
   --tab=/tmp tutorials tutorials_tbl
password ******

اکسپورت کردن محتوای جدول با تعریف‌ها در قالب SQL

برای اکسپورت کردن به یک فایل در قالب SQL باید از دستور زیر استفاده کنیم:

$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******

دستور فوق فایلی ایجاد می‌کند که شامل محتوای زیر است:

-- MySQL dump 8.23
--
-- Host: localhost    Database: TUTORIALS
---------------------------------------------------------
-- Server version       3.23.58

--
-- Table structure for table `tutorials_tbl`
--

CREATE TABLE tutorials_tbl (
   tutorial_id int(11) NOT NULL auto_increment,
   tutorial_title varchar(100) NOT NULL default '',
   tutorial_author varchar(40) NOT NULL default '',
   submission_date date default NULL,
   PRIMARY KEY  (tutorial_id),
   UNIQUE KEY AUTHOR_INDEX (tutorial_author)
) TYPE = MyISAM;

--
-- Dumping data for table `tutorials_tbl`
--

INSERT INTO tutorials_tbl 
   VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO tutorials_tbl 
   VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO tutorials_tbl 
   VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');

برای dump کردن جدول‌های متعدد باید نام همه جدول‌ها و در نهایت نام پایگاه داده را بیاورید. برای dump کردن کل پایگاه داده لازم نیست نام تک تک جدول‌ها را پس از نام پایگاه داده بیاورید.

$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******

برای پشتیبان‌گیری از همه پایگاه‌های داده موجود روی یک میزبان از دستور زیر استفاده می‌کنیم:

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

گزینه all-databases-- از نسخه 3.23.12 به بعد در MySQL وجود دارد. این متد می‌تواند برای پیاده‌سازی یک راهبرد پشتیبان‌گیری از پایگاه داده مورد استفاده قرار گیرد.

کپی کردن جدول‌ها یا پایگاه‌های داده به میزبان دیگر

اگر می‌خواهید جدول‌ها یا پایگاه‌های داده را از یک سرور MySQL به سرور دیگری کپی کنید در این صورت می‌توانید از برنامه mysqldump به همراه نام پایگاه داده و نام جدول استفاده کنید.

دستور زیر را در میزبان مبدأ اجرا کنید. این دستور کل پایگاه داده را به فایل dump.txt کپی می‌کند.

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

همچنین می‌توانید کل پایگاه داده را بدون استفاده از نام جدول خاص dump کنید. سپس می‌توانید فایل dump.txt را به میزبان دیگری ftp کنید و از دستور زیر استفاده نمایید. پیش از اجرای این دستور باید مطمئن شوید که پایگاه داده با نام database_name را روی سرور مقصد ایجاد کرده‌اید:

$ mysql -u root -p database_name < dump.txt
password *****

روش دیگر برای انجام این کار استفاده از یک فایل میانجی برای ارسال خروجی mysqldump به طور مستقیم روی شبکه به سرور MySQL ریموت است. اگر می‌توانید از سرور پایگاه داده مبدأ به هر دو سرور وصل شوید، می‌توانید از دستور زیر استفاده کنید. ابتدا مطمئن شوید که به هر دو سرور دسترسی دارید:

$ mysqldump -u root -p database_name \
   | mysql -h other-host.com database_name

در mysqldump نیمی از دستورها به سرور محلی وصل می‌شوند و خروجی dump را روی pipe می‌نویسند. نیمی دیگر از دستورها نیز به سرور ریموت MySQL روی میزبان دیگر وصل می‌شوند. این دستورها pipe را برای ورودی خوانده و هر گزاره را به سرور میزبان ریموت ارسال می‌کنند.

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tutorialspoint
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *