با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. در بخش قبلی به انواع روشهای Export کردن دیتابیس در MySQL پرداختیم، و چند نمونه کد نیز در این مورد بررسی کردیم. پس از انجام فرآیند Export دیتابیس و جداول شما برای وارد کردن در دیتابیس مقصد که در سیستم دیگری قرار دارد آماده می شود، در آن طرف نیز با طی کردن مراحلی و کدهای ساده می توانید دیتابیس و داده های آن را که در قالب یک فایل کپی کرده اید را Import (وارد) کنید. در ادامه ی این مباحث با چگونگی Import کردن دیتابیس در MySQL با ما همراه باشید.
در ادامه ی این مباحث به روشها و کدهای Import کردن دیتابیس در MySQL پرداخته ایم.
MySQL دستور LOAD DATA را که به عنوان یک loader داده ی بزرگ عمل می کند را ارائه می دهد.
مثال
یک مثال ساده که یک فایل dump.txt را از دایرکتوری جاری شما خوانده و در جدول mytbl در دیتابیس جاری شما load می کند:
1 | mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl; |
اگر کلمه ی کلیدی LOCAL ارائه نشده باشد، MySQL داده ها را از یک آدرس محلی سیستم دریافت می کند.
در حالت پیش فرض LOAD DATA به نظر می رسد که فایل داده شامل خطوطی است که با linefeed پایان یافته است.
برای مشخص کردن فرمت یک فایل ، از FIELDS برای توصیف کاراکترهای یک فیلد در یک خط استفاده کنید.
و همچنین از یک LINES برای مشخص کردن توالی line-ending استفاده کنید.
دستور LOAD DATA مشخص می کند که فایل data شامل مقادیر جدا شده توسط کولون ها و خطوط متوقف شده با کاراکتر خط جدید است:
1 2 3 | mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl -> FIELDS TERMINATED BY ':' -> LINES TERMINATED BY '\r\n'; |
دستور LOAD DATA فرض می کند که ستون ها در فایل data همانند ستون های جدول مشابه هستند.
شما می توانید یک لیست را مشخص کنید تا مشخص شود کدامیک از ستون های datafile باید بارگذاری شود.
فرض کنید که جدول شما دارای ستون a، b و c اما ستونهای پیوندی در فایل data مربوط به ستون های b، c و a است.
شما می توانید فایل فوق را با استفاده از کد زیر load کنید :
1 2 | mysql> LOAD DATA LOCAL INFILE 'dump.txt' -> INTO TABLE mytbl (b, c, a); |
خروجی زیر نیز شامل یک برنامه به نام mysqlimport است.
این برنامه به عنوان یک پوشه در DATA LOAD عمل می کند.
بنابراین شما می توانید فایل های ورودی را مستقیما از خط فرمان بارگذاری کنید.
برای load کردن داده ها از dump.txt در mytbl از دستور زیر در یونیکس استفاده کنید:
1 2 | $ mysqlimport -u root -p --local database_name dump.txt password ***** |
اگر از mysqlimport استفاده می کنید، گزینه های خط فرمان ارائه دهنده های قالب را ارائه می دهند.
دستورات mysqlimport که با دو عبارت قبلی DATA LOAD مطابقت دارند به نظر می رسد در بلوک کد زیر نشان داده شده است:
1 2 3 | $ mysqlimport -u root -p --local --fields-terminated-by = ":" \ --lines-terminated-by = "\r\n" database_name dump.txt password ***** |
دستور که در آن گزینه ها را مشخص می کنید، برای mysqlimport مهم نیست، به جز اینکه همه آنها باید قبل از نام دیتابیس باشند.
دستور mysqlimport گزینه ی columns– را برای ترتیب ستون ها مشخص می کند :
1 2 3 | $ mysqlimport -u root -p --local --columns=b,c,a \ database_name dump.txt password ***** |
بند FIELDS می تواند سایر گزینه های قالب را علاوه بر TERMINATED BY مشخص کند.
در حالت پیش فرض LOAD DATA فرض می کند که مقادیر بدون کوتیشن و backslash را به عنوان یک کاراکتر escape تفسیر می کند.
برای نشان دادن مقدار کوتیشن به صورت صریح، از دستور ENCLOSED BY استفاده کنید.
MySQL این کاراکتر را از انتهای مقادیر داده در پردازش ورودی حذف می کند.
برای تغییر کاراکتر پیشفرض، از ESCAPED BY استفاده کنید.
برای مثال اگر کوتیشن و کاراکتر escape ” و \ است مقدار ورودی “a””b\”c” به a”b”c تفسیر می شود.
برای mysqlimport، گزینه های مربوط به خط فرمان و مشخص کردن مقادیر کوتیشن fields-enclosed-by و -fields-escaped-by هستند.
با ارائه ی مباحث Export کردن دیتابیس در MySQL در بخش قبلی و Import کردن دیتابیس در MySQL در این بخش، چگونگی جا به جایی دیتابیس های ایجاد شده در MySQL را به همراه جداول و داده های آن ها را به عنوان آخرین مبحث این دوره ارائه کردیم.