روش‌های مختلف ایمپورت (Import) پایگاه داده در MySQL — راهنمای جامع

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

دو روش ساده برای بارگذاری داده‌ها در پایگاه داده MySQL از یک فایل قبلاً پشتیبان‌گیری شده وجود دارد.

ایمپورت داده‌ها با استفاده از LOAD DATA

MySQL یک گزاره دارد که به عنوان یک بارگذار دسته‌ای داده‌ها عمل می‌کند.

در ادامه مثالی از این گزاره ارائه شده که داده‌ها را از یک فایل در دایرکتوری جاری خوانده و در جدول mytbl در پایگاه داده جاری بارگذاری می‌کند:

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

اگر کلیدواژه LOCAL ارائه نشود، MySQL با استفاده از نام مسیر مطلق (absolute pathname) به دنبال فایل داده در میزبان سرور می‌گردد که مکان فایل در آن به طور کامل مشخص شده است و از root سیستم فایل آغاز می‌شود. MySQL فایل را از مکان مورد نظر می‌خواند.

به طور پیش‌فرض LOAD DATA فرض می‌کند که فایل‌های داده شامل خط‌هایی هستند که با کاراکترهای newline پایان می‌یابند و مقادیر داده‌ها درون یک خط به وسیله کاراکتر tab از هم جدا می‌شوند.

برای تعیین صریح قالب فایل باید از بند FIELDS برای توصیف خصوصیات فیلدهای درون خط و از بند LINES برای تعیین کاراکترهای نشان دهنده پایان خط استفاده کنیم. گزاره LOAD DATA زیر مشخص می‌سازد که فایل داده شامل مقادیری است که به وسیله دونقطه (:) از هم جدا می‌شوند و خطوط نیز با کاراکتر newline خاتمه یافته‌اند.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';

در دستور LOAD DATA فرض می‌شود که ستون‌های فایل داده با همان ترتیبی هستند که ستون‌های جدول قرار دارند. اگر چنین نباشد می‌توان فهرستی برای تعیین این که کدام ستون در فایل داده، باید در کدام ستون جدول بارگذاری شود ارائه کرد. فرض کنید جدولی دارای ستون‌های a، b و c باشد؛ اما ترتیب ستون‌ها در فایل داده به صورت b، c و a است.

بنابراین فایل را می‌توان به صورت زیر در جدول مربوطه بارگذاری کرد:

mysql> LOAD DATA LOCAL INFILE 'dump.txt'
-> INTO TABLE mytbl (b, c, a);

ایمپورت کردن داده‌ها با mysqlimport

MySQL همچنین دارای یک برنامه کاربردی به نام mysqlimport است که به عنوان یک پوشش پیرامون دستور LOAD DATA عمل می‌کند به طوری که می‌تواند فایل‌های ورودی را مستقیماً از خط فرمان بارگذاری کند.

برای بارگذاری داده‌ها از فایل dump.txt در mytbl باید از دستور زیر در اعلان یونیکس استفاده کنید.

$ mysqlimport -u root -p --local database_name dump.txt
password *****

اگر از mysqlimport استفاده می‌کنید، با استفاده از گزینه‌های خط فرمان می‌توانید خصوصیات قالب را مشخص کنید. دستورهای mysqlimport که متناظر با دو گزاره قبلی LOAD DATA هستند در قطعه کد زیر قابل مشاهده‌اند:

$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
--lines-terminated-by = "\r\n" database_name dump.txt
password *****

ترتیب مشخص‌سازی گزینه‌ها برای mysqlimport اهمیتی ندارد، به جز این که همگی آن‌ها باید در انتها نام پایگاه داده را داشته باشند. در گزاره mysqlimport از گزینه –columns برای تعیین ترتیب جدول استفاده می‌شود:

$ mysqlimport -u root -p --local --columns=b,c,a \
database_name dump.txt
password *****

مدیریت گیومه‌ها و کاراکترهای خاص

بند FIELDS می‌تواند گزینه‌های قالب‌بندی دیگری به جز TERMINATED BY را نیز تعیین کند. به طور پیش‌فرض دستور LOAD DATA فرض می‌کند که مقادیر بدون گیومه هستند و از کاراکتر (\) به عنوان کاراکتر escape برای کاراکترهای خاص استفاده می‌کند. برای این که کاراکتر گیومه را صریحاً مشخص کنیم، باید از دستور ENCLOSED BY استفاده کنیم. MySQL این کاراکتر را از انتهای داده‌ها در طی پردازش ورودی حذف می‌کند. برای تغییر دادن کاراکتر escape پیش‌فرض از ESCAPED BY استفاده می‌شود.

زمانی که از ENCLOSED BY برای تعیین کاراکترهای گیومه که باید از مقادیر داده‌ای حذف شوند، استفاده می‌شود، این امکان وجود دارد که همه کاراکترهای گیومه درون مقادیر داده‌ای با دوبل کردن آن یا با افزودن پس از کاراکتر escape گنجانده شوند. برای نمونه اگر کاراکترهای گیومه و escape به ترتیب به صورت (“) و (\) باشند، مقدار ورودی "a""b\"c" به صورت a"b"c تفسیر خواهد شد. برای دستور mysqlimport گزینه‌های خط فرمان متناظر برای تعیین کاراکترهای گیومه و escape به ترتیب --fields-enclosed-by و --fields-escaped-by هستند.

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

==

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

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