وارد کردن اطلاعات از فایل به پایگاه داده MySQL

MySQL

سلام

قبلا در مورد انتقال اطلاعات در MySQL توضیح دادم. مطلب امروز در زمینه وارد کردن اطلاعات (import) از یک فایل متنی (txt, csv و …) به پایگاه داده MySQL می باشد. برای وارد کردن اطلاعات از یک فایل به پایگاه داده MySQL از دستور `LOAD DATA INFILE` استفاده می کنیم. شکل کلی این دستور به صورت زیر است:

mysql> LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]

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

mysql> LOAD DATA INFILE 'data.txt' INTO TABLE my_db.my_table;

در صورتی که جداکننده فیلد ها (FIELDS TERMINATED) را مشخص نکنید، MySQL مقدار پیش فرض \t که همان تب (Tab) هست را در نظر می گیرد. همچنین مقدار پیش فرض جداکننده خطوط \n که همان خط جدید (New Line) می باشد را در نظر می گیرد.
نکته
در صورتی که فایل شما دارای کاراکترهای UTF8 می باشد، علاوه بر تعریف جدول my_table با encoding مربوط به UTF8، باید نوع encoding را نیز در دستور LOAD DATE بنویسید. به صورت:

LOAD DATA INFILE 'data.txt' INTO TABLE my_db.my_table  character set UTF8;

در ادامه به بررسی یک مثال عملی در مورد واردکردن اطلاعات یک فایل CSV می پردازیم.

بررسی یک مثال عملی

فرض کنید فایلی به نام ip-list.csv با محتوای زیر دارید:

"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
"1.0.8.0","1.0.15.255","16779264","16781311","CN","China"
"1.0.16.0","1.0.31.255","16781312","16785407","JP","Japan"
"1.0.32.0","1.0.63.255","16785408","16793599","CN","China"
"1.0.64.0","1.0.127.255","16793600","16809983","JP","Japan"
"1.0.128.0","1.0.255.255","16809984","16842751","TH","Thailand"
"1.1.0.0","1.1.0.255","16842752","16843007","CN","China"
"1.1.1.0","1.1.1.255","16843008","16843263","AU","Australia"
"1.1.2.0","1.1.63.255","16843264","16859135","CN","China"
"1.1.64.0","1.1.127.255","16859136","16875519","JP","Japan"

این فایل تعدادی آی‌پی و کشور متناظر با آن‌ها را نمایش می دهد. برای وارد کردن این اطلاعات به پایگاه داده MySQL ابتدا باید جدولی مناسب با این داده‌ها بسازیم. برای آشنایی با انتخاب نوع مناسب داده می توانید به مطلب انواع داده در MySQL مراجعه نمایید. دستور زیر یک جدول به نام geoip ایجاد می کند:

mysql> CREATE TABLE `geoip` (
  `begin_ip` varchar(15) NOT NULL,
  `end_ip` varchar(15) NOT NULL,
  `begin_num` int(11) unsigned NOT NULL,
  `end_num` int(11) unsigned NOT NULL,
  `country` char(2) NOT NULL,
  `name` varchar(50) NOT NULL
) ENGINE=MyISAM;

دستور زیر این اطلاعات را از فایل ip-list.csv به جدول geoip وارد می‌کند. در صورت نیاز باید آدرس صحیح فایل را نیز در کنار نام آن درج کنید.

mysql> LOAD DATA INFILE 'ip-list.csv'
 INTO TABLE geoip
 FIELDS TERMINATED BY "," ENCLOSED BY '"';

Query OK, 12 rows affected (0.23 sec)
Records: 12  Deleted: 0  Skipped: 0  Warnings: 0

در دستور بالا مشخص کرده ایم که ستون‌ها با “,” جدا شده و محتوای هر ستون نیز در داخل دو " قرار دارد.

منابع

پی نوشت

  • متاسفانه بخش توسعه پایگاه داده MySQL با استناد به قانون جرایم رایانه ای فیلتر شده است. امیدوارم مسئولین تفکر و تعقل بیشتری نسبت به فیلتر کردن سایت ها داشته باشند.
  • این مطلب به بهانه فیلتر شدن بخش توسعه پایگاه داده MySQL نوشته شده است.

شاد باشید

انتقال اطلاعات در MySQL

سلام :)

یکی از مراحل انتقال اطلاعات یک پروژه مربوط به انتقال پایگاه های داده می باشد. برای اینکار روش های مختلفی وجود دارد ولی همه آنها ۲ مرحله مشابه دارند، Import و Export کردن. مرحله export کردن را می توان به عنوان درست کردن نسخه پشتیبان نیز در نظر گرفت.
با فرض اینکه پایگاه داده مورد استفاده MySQL می باشد، می توانید از دستورات زیر استفاده کنید:

Export

دستور mysqldump برای گرفتن خروجی از پایگاه داده استفاده می شود. به عنوان مثال:

$ mysqldump -umy_user -p -R my_database > export.sql

دستور بالا محتویات پایگاه داده my_database به همراه روتین های آن (پارامتر R) را در فایل export.sql ذخیره می کند.
در صورتی که پایگاه داده شما بر روی سرور قرار دارد می توانید با استفاده از پارامتر h و کاربر خودتان بر روی سرور مستقیم و بدون نیاز به ftp و ssh نسخه پشتیبان تهیه کنید:

$ mysqldump -umy_server_user -p -hserver_host -R my_database > export.sql

Import

برای وارد کردن اطلاعات از دستور mysql استفاده می کنیم:

$ mysql -umy_user -p my_database < export.sql

* به جهت علامت > توجه کنید.

ترکیب کردن Export و Import

برای ترکیب کردن این دو دستور از | استفاده می کنیم:

$ mysqldump -umy_user_1 -pmy_pass_1 -R my_database \
 | mysql -umy_user_2 -pmy_pass_2 my_database

*حداقل یکی از رمز عبورهای بالا (my_pass_1 یا my_pass_2) را باید وارد کنید.
البته Import کردن مستقیم از دستور Export خیلی جالب نیست. این دستور بیشتر زمانی کاربرد دارد که بخواهید یکی از جدول های پایگاه داده خود را بروز رسانی کنید:

$ mysqldump -umy_user -pmy_pass_1 -R my_database my_table \
 | mysql -umy_user -pmy_pass_2  my_database

دستور بالا ساختار و محتویات جدول my_table را بروزرسانی می کنید.

کاربرد دیگر ترکیب کردن Export و Import تهیه نسخه کاملا مشابه از پایگاه داده می باشد. دستورات زیر یک نسخه کاملا مشابه از پایگاه داده my_database با نام my_database_2 بر روی پایگاه داده ایجاد می کنید:

$ mysqladmin -umy_user -p create my_database_2
$ mysqldump -umy_user_1 -pmy_pass_1 -R my_database \
 | mysql -umy_user_2 -pmy_pass_2  my_database_2

برای اطلاعات بیشتر به لینک های زیر مراجعه کنید:

موفق باشید

راهنمای وارد کردن(import) و صادر کردن(export) در MySQL

سلام mysql

دیروز داشتم سایتی رو منتقل می کردم. برای انتقال اطلاعات هم مثل همیشه از ترمینال(کنسول؟) استفاده کردم. گفتم اینجا روش کار رو بنویسم تا اگر شما هم روزی نیاز به انتقال دیتابیس mysql (مای اس کیو ال؟) داشتید براتون مفید باشه.
توجه داشته باشید که برای اینکه از این روش استفاده کنید، سرور شما باید لینک باشه و بتونید پورت ssh اون باز باشه. یا اینکه روی لوکال در لینوکس باشید. خلاصه اینکه بدونید یه جوری دستور رو اجرا کنید.

صادر کردن (export)

$ mysqldump -u username -p password database_name > FILE.sql

برای export شما باید به عنوان کاربر ریشه (root ؟) اقدام کنید.
username: نام کاربری. معمولا root
password: رمز عبور. معمولا خالی است و نیاز به نوشتن ندارد.
database_name: نام دیتابیس (پایگاه داده)
FILE.sql: نام فایلی که اطلاعات صادر شده در آن باید ذخیره شوند. در صورتی که فایل وجود نداشته باشد، این فایل ایجاد می شود.

وارد کردن (import)
با دستور زیر اطلاعات خود را وارد می کنید:

$ mysql -u username -p password database_name  &lt; FILE.sql 

توضیحات این قسمت نیز مانند بخش صادر کردن(export) است.

موفق باشید