وارد کردن پایگاه داده mysql. نحوه وارد کردن یک پایگاه داده بزرگ MySQL با دور زدن محدودیت های phpMyAdmin نحوه بازیابی پایگاه داده MySQL از Dump از طریق کنسول

25.12.2023 عکس و فیلم

درود، دوستان! 🙂

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

در این مقاله در مورد نحوه تخلیه پایگاه داده MySQL و همچنین آپلود داده ها از MySQL به یک فایل اکسل و فرمت csv صحبت خواهم کرد.

ما به گزینه‌های مختلف برای بازیابی اطلاعات از موارد زیر نگاه خواهیم کرد: ایجاد یک تخلیه از یک یا چند پایگاه داده، صادرات داده‌ها از جداول جداگانه و نتایج دلخواه انتخاب کنیددرخواست ها.

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

در این مقاله، من در مورد نحوه صادرات داده ها با استفاده از phpMyAdmin و سایر ابزارهای بصری صحبت نمی کنم.

اولاً، زیرا قبلاً مطالب کافی در مورد این موضوع در اینترنت وجود دارد. علاوه بر این، این مواد با کیفیت بالا است، که من مشتاق کپی کردن آن نیستم.

و ثانیاً، من خودم در یکی از مقالاتم به طور خلاصه روند خروجی اطلاعات از پایگاه داده MySQL به یک فایل SQL را بررسی کردم، جایی که در مورد آن صحبت کردم.

بنابراین، اگر یک توسعه‌دهنده حرفه‌ای یا مدیر سیستم نیستید که ممکن است از اطلاعات مربوط به کار با کنسول بهره مند شوید، و فقط برای دستورالعمل‌هایی در مورد نحوه صادرات پایگاه داده به phpMyAdmin آمده‌اید، می‌توانید خود را به خواندن اطلاعات در لینک بالا محدود کنید. .

می خواهم مرا به درستی درک کنید: من نمی خواهم شما را به هیچ وجه توهین کنم، بلکه فقط می خواهم وقت خود را با حداکثر سود برای تجارت خود بگذرانید و آنچه را که دنبالش بودید به دست آورید.

این قسمت مقدماتی را به پایان می‌رساند و به بررسی دستورات کنسول برای ایجاد یک پایگاه داده MySQL می‌پردازیم، که تصمیم گرفتم آن‌ها را بر اساس میزان داده‌های ذخیره شده مرتب کنم: شروع از صادرات کل پایگاه داده، پایان دادن به جداول جداگانه و نتایج پرس و جوهای دلخواه

ایجاد یک پایگاه داده MySQL از طریق کنسول

در همان ابتدا می خواهم یک توضیح کوچک بدهم.

تخلیه پایگاه دادهیک فایل با مجموعه ای از دستورات SQL است که با راه اندازی به شما امکان می دهد پایگاه داده و جداول ایجاد کنید و آنها را با اطلاعات پر کنید. Dump برای کسانی که می خواهند پایگاه داده MySQL را دانلود کنند تا آن را در سرور دیگری یا در یک سرور موجود کپی کنند، مورد نیاز است.

همچنین، اگر کسی اطلاع نداشته باشد، یک نسخه پشتیبان از پایگاه داده MySQL، اساساً تخلیه آن در یک بازه زمانی مشخص است که به شما امکان می دهد ساختار و داده های پایگاه داده را در صورت لزوم بازیابی کنید.

صادرات داده ها- این به سادگی استخراج اطلاعات از جداول به صورت متنی برای کار بیشتر با ویرایشگرهای متن یا گرافیک است.

بنابراین، دستورات این اقدامات کمی متفاوت خواهد بود.

برای ایجاد یک پایگاه داده dump، MySQL یک ابزار داخلی به نام دارد mysqldump، که باید خارج از خط فرمان MySQL در کنسول سرور یا پوسته دیگر استفاده شود.

بنابراین، برای ساده ترین و رایج ترین گزینه - صادرات داده ها از یک پایگاه داده خاص در کنسول MySQL برای انتقال آن به سرور دیگر یا کپی داخلی، باید دستور زیر را اجرا کنید:

Mysqldump -u username -p database_name > path_and_dump_file_name

این ابزار می تواند Dump های پایگاه داده MySQL را فقط در قالب فایل هایی با دستورات SQL ایجاد کند، بنابراین مهم نیست که چه پسوندی برای فایل خود انتخاب کنید، محتوای آن در هر صورت یکسان خواهد بود. و فراموش نکنید که قبل از صادرات اطلاعات از MySQL، مجوزهای نوشتن دایرکتوری که در آن قرار دارد را بررسی کنید تا فایل ایجاد شود.

اگر به طور ناگهانی نیاز به ایجاد یک Dump از تمام پایگاه های داده روی سرور دارید، از گزینه دستور زیر استفاده کنید:

Mysqldump -u username -p --all-databases > path_and_dump_file_name

برای تخلیه تنها چند پایگاه داده خاص، باید mysqldump را با پارامترهای زیر فراخوانی کنید:

Mysqldump -u username -p -- databases database_name1, database_name2, ... > path_and_dumpfile_name

در نتیجه، در هر مورد یک پایگاه داده MySQL حاوی دستوراتی برای ایجاد ساختار جداول موجود (فیلدها، انواع آنها، نمایه ها، کلیدها و غیره) و همچنین عملیاتی برای پر کردن آنها با داده دریافت خواهید کرد.

این گزینه فقط برای بازیابی و کپی کل پایگاه داده مناسب است.

ما بیشتر در مورد نحوه تهیه نسخه پشتیبان از جداول MySQL خاص و بدست آوردن اطلاعات آنها به شکل قابل خواندن صحبت خواهیم کرد.

ریختن جدول MySQL و صادرات داده ها

برای ایجاد یک Dump از جداول پایگاه داده MySQL خاص، به همان ابزار نیاز داریم mysqldump، با پارامترهای زیر فراخوانی می شود:

Mysqldump -u username -p database_name table_name1, table_name2, ... > path_and_dumpfile_name

هنگام فراخوانی mysqldump، می توانید جداول مورد نیاز را به عنوان مقدار پارامتر مشخص کنید -- جداول، هنگام استفاده از پارامتر -- پایگاه های دادهنادیده گرفته خواهد شد:

Mysqldump -u username -p -- databases database_name1, database_name2 --tables table_name1, table_name2, ... > path_and_dumpfile_name

مثال بالا خطای زیر را نمایش می دهد:

Mysqldump: خطا دریافت شد: 1049: پایگاه داده ناشناخته "database_name1" هنگام انتخاب پایگاه داده

همانطور که می بینید، فقط آخرین پایگاه داده از لیست استفاده خواهد شد. در اصل، این رفتار کاملاً منطقی است، زیرا جداول مشخص شده ممکن است در همه پایگاه های داده ظاهر نشوند.

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

اما اگر شما فقط نیاز به دریافت اطلاعات ذخیره شده در آنها و ترجیحاً به شکل خوانا داشته باشید تا بتوانید آن را برای مدیر ارسال کنید و در یک ویرایشگر متن یا صفحه گسترده مشاهده کنید، چه؟ MySQL نیز ابزارهایی برای این کار دارد.

گزینه تماس با ابزار کمکی به ما کمک می کند تا به برنامه های خود دست پیدا کنیم mysqlاز کنسول با پارامترهای خاص:

Mysql -u username -p database_name -e "SELECT * FROM table_name"

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

خوب، برای اینکه داده ها را به کنسول خروجی ندهید، بلکه برای نوشتن آن در یک فایل، باید دستور را به صورت زیر تکمیل کنید:

Mysql -u username -p -e "SELECT * FROM tablename" > path_and_filename

به لطف این ساختارها، ما نه تنها می توانیم داده های ذخیره شده در تمام فیلدهای جدول، بلکه در فیلدهای خاص را نیز بدست آوریم. برای انجام این کار، فقط علامت های عام (*) را با موارد مورد نیاز که با کاما از هم جدا شده اند جایگزین کنید.

در نتیجه خروجی یک فایل متنی معمولی خواهد بود که شامل نام فیلدها به صورت هدر و اطلاعات مربوط به آنها برای تمامی رکوردها خواهد بود. می توان آن را در یک ویرایشگر متن معمولی باز کرد، بدون توجه به وضوحی که هنگام ایجاد آن به آن می دهید.

اگر می خواهید داده ها را از یک پایگاه داده MySQL با فرمت xls یا csv صادر کنید تا فایل حاصل به درستی در ویرایشگرهای صفحه گسترده نمایش داده شود، سپس به شما خواهیم گفت که چگونه این کار را کمی بعد انجام دهید :)

ایجاد پشتیبان و خروجی داده ها از پایگاه داده MySQL با استفاده از پرس و جو

ما در مورد نحوه حذف یک پایگاه داده MySQL - یک یا چند جداول و همچنین جداول جداگانه صحبت کردیم. اما گاهی اوقات در عمل مواردی وجود دارد که شما نیاز به صادرات یک مجموعه داده دارید که به یک جدول محدود نمی شود. یا باید فقط برخی از داده ها را از جدول انتخاب کنید.

توسعه‌دهندگان پروژه‌های شرکتی به‌خصوص زمانی که مدیران از آنها می‌خواهند انواع داده‌های آماری را ارائه کنند، اغلب با این مشکل مواجه می‌شوند. یا زمانی که باید از قسمت خاصی از جدول پشتیبان تهیه کنید تا سریع آن را بازیابی کنید.

برای پشتیبان گیری به همان ابزار نیاز داریم mysqldump، که باید به این صورت نامیده شود:

Mysqldump -u user_name -p database_name table_name --where "lookup" > path_and_dump_file_name

در نتیجه، فایلی با دستورات SQL برای ایجاد یک جدول با کل ساختار آن دریافت می کنیم که پس از ایجاد، با اطلاعات انتخاب شده با استفاده از جستجوی جستجو پر می شود.

اگر فقط نیاز داریم که داده‌های ذخیره شده در یک یا چند جدول را دریافت کنیم، باید دستور استفاده شده در مورد قبلی را هنگام بازیابی همه داده‌های جدول، فقط با برخی توضیحات اصلاح کنیم:

Mysql -u user_name -p -e "SELECT * FROM table_name WHERE search" > path_and_file_name

همانطور که متوجه شدید، علاوه بر توضیحات مختلف مشخص شده در درخواست با استفاده از بخشنامه جایی که، می توانید از سایر ساختارهای SQL استفاده کنید: پیوستن, اتحاد. اتصالو غیره.

شما می توانید هر نوع آماری را جمع آوری کنید :)

همین عمل را می توان هنگام کار بر روی خط فرمان MySQL با استفاده از دستور زیر انجام داد:

SELECT * FROM database_table WHERE مراجعه به OUTFILE "path_and_file_name";

این دستور به طور خاص برای ایجاد فایل هایی با نتایج نمونه طراحی شده است. علاوه بر این، نتایج را می توان نه تنها به فایل ها صادر کرد، بلکه روی متغیرها نیز نوشت و داده های خروجی را می توان به روش های مختلف قالب بندی کرد.

اگر موارد بالا مورد شماست، می توانید لیست کاملی از پارامترها و گزینه های فراخوانی این دستور را در اینجا پیدا کنید - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

برای پایان دادن به گشت و گذار کوتاه خود در mysqldump، می خواهم یک نوع فراخوانی یک دستور را با لیستی از پارامترها ارائه دهم تا یک Dump بهینه از پایگاه داده و جداول MySQL ایجاد کنید، بازیابی پایگاه داده و جداول جداگانه که از آن زمان کمتری نسبت به با تماس معمولی:

mysqldump -u user_name -h host_or_IP_MySQL_server -p --no-autocommit --opt database_name > path_and_dump_file_name;

برای آزمایش، از این گزینه برای حذف یک پایگاه داده MySQL با حجم 143 مگابایت استفاده کردم. بازیابی بعدی 59 ثانیه طول کشید در مقایسه با 1 دقیقه و 3 ثانیه زمانی که پایگاه داده از یک dump ساخته شده با فراخوانی mysqldump بدون پارامترهای خاص بازیابی شد.

قبول دارم که این چیز کوچکی است. اما این فقط در مورد مقدار معینی از داده است. اگر از این تکنیک هنگام ایجاد یک دامپ بزرگتر از 1 گیگابایت استفاده کنید، تفاوت چشمگیرتر خواهد بود.

اگر با چنین وضعیتی مواجه شدید، فراموش نکنید که ابتدا پایگاه داده MySQL را بایگانی کنید. بهترین tar.gz است. سپس بهبودی حتی زمان کمتری خواهد برد.

داده ها را از MySQL به فایل های اکسل و csv صادر کنید

بیخود نبود که اطلاعات مربوط به خروجی اطلاعات از MySQL را در این دو فرمت در یک بلوک ترکیب کردم، زیرا ... آنها بسیار شبیه به هم هستند، تقریباً به روش مشابهی استفاده می شوند (برای ساختار اطلاعات در قالب جداول) و همان دستورات برای صادرات فراخوانی می شوند.

همانطور که می دانید، تنها تفاوت قابل توجه بین این فرمت ها این است که پسوند xls و xlsx دارای فایل های ایجاد شده در Microsoft Office Excel هستند که فقط تحت ویندوز کار می کند، در حالی که فایل های csv جهانی تر هستند و عملیات با آنها در بسیاری از ویرایشگرها امکان پذیر است.

این بدان معنا نیست که xls در جایی به جز Microsoft Office Excel باز نمی شود. همین OpenOffice خلاف این را تایید می کند.

اما برای امکان پذیر شدن این امر باید این پشتیبانی در محصول نرم افزاری وجود داشته باشد. فایل های csv حتی در یک ویرایشگر متن معمولی مانند Notepad قابل خواندن هستند، اما این فرم به طور کامل قابل خواندن نخواهد بود.

اجازه دهید با این واقعیت شروع کنم که شما فقط می توانید نتایج پرس و جوهای SQL را به xls یا csv صادر کنید که قبلاً کار با آنها را یاد گرفتیم، زیرا خروجی کل پایگاه داده در یک فایل در یک عملیات غیرممکن خواهد بود.

اولا، این بهینه نیست، زیرا ... اگر حجم زیادی از اطلاعات در پایگاه داده ذخیره شده باشد، بعید است چنین فایلی باز شود. و دوم اینکه نحوه تقسیم اطلاعات داخل فایل به جداول و فیلدها مشخص نیست.

خیر، البته امکان این کار وجود دارد، اما بعید است با یک دستور انجام شود و در کل بعید است که کسی این کار را در کنسول انجام دهد. من فکر می کنم که برای این اهداف به نرم افزار خاصی یا حداقل یک اسکریپت نیاز خواهید داشت.

اگر ناگهان می دانید چگونه می توانید اطلاعات را از کل پایگاه داده MySQL به یک یا چند فایل xls در کنسول صادر کنید، در نظرات در مورد آن بنویسید. فکر می کنم خواندن این مطلب برای خیلی ها مفید باشد.

بنابراین، اگر ما در مورد نحوه صادرات داده ها از MySQL به xls و csv صحبت می کنیم، می توان این کار را مستقیماً در کنسول سرور از طریق ابزار انجام داد. mysqlیا در، کاری که در مقاله قبلی شما را با آن معرفی کردم.

بیایید به ترتیب شروع کنیم.

می توانید داده ها را از پایگاه داده MySQL به فرمت های csv و xls به طور مستقیم در کنسول سرور با استفاده از دستورات زیر صادر کنید.

بر لینوکسسیستم های:

Mysql -u username -d database_name -p -e "SELECT * FROM database_table;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. csv

در اصل، در صورت لزوم، می توانید از این دستور برای صادرات داده های MySQL به یک فایل اکسل استفاده کنید. اما، صادقانه بگویم، من در عمل با این موضوع برخورد نکرده‌ام و نمی‌دانم در نهایت چه اتفاقی خواهد افتاد، زیرا ... من در حال حاضر روی ویندوز کار می کنم. اگر از این دستور در لینوکس استفاده می کنید، لطفاً در نظرات در مورد نتایج کار خود بنویسید. من فکر می کنم اطلاعات برای همه جالب خواهد بود.

بر پنجره ها:

متأسفانه، صادرات داده ها از جداول MySQL به csv با استفاده از دستور بالا در این مورد کار نخواهد کرد، زیرا ویندوز، بر خلاف لینوکس، مانند sed در لینوکس، فرمان کنسول داخلی برای کار با رشته ها ندارد.

البته، شما می توانید آن را نصب کنید، اما بیش از حد دردسر است. به طور متناوب، می توانید استفاده کنید CygWin- شبیه ساز کنسول لینوکس برای سیستم های ویندوز.

اگر قبلا آن را نصب کرده باشید خوب است. در غیر این صورت، صادرات داده ها از پایگاه داده MySQL با استفاده از روش انتخاب شده، برای ما دردسر زیادی به همراه خواهد داشت.

اما استخراج اطلاعات در یک فایل xls به آسانی 5 کوپک است :) راه اندازی آن به روش زیر بسیار آسان است که من شخصاً امتحان کردم:

Mysql -u username -d database_name -p -e "SELECT * FROM database_table;" > path_and_file_name.xls

این فایل در Microsoft Office Excel بدون هیچ مشکلی باز شد. تنها نکته این است که هنگام باز کردن آن، پیامی روی صفحه نمایش داده می شود که نشان می دهد فرمت واقعی فایل در حال باز شدن با پسوند مشخص شده آن متفاوت است.

اما هنگام تأیید عمل، سند بدون مشکل باز شد - تمام اطلاعات به شکلی که در خود جدول ذخیره شده بود به سلول هایی تقسیم شد.

نمی دانم، شاید اگر اقدامات خاصی را در مایکروسافت آفیس اکسل انجام دهید، مشکلاتی در آینده به وجود بیاید. حداقل زمانی که به طور معمول به داده ها نگاه می کردم، چیز غیرعادی ندیدم.

اگر در هنگام استفاده از فایل xls صادر شده از MySQL چه در این برنامه و چه در برنامه های دیگر با مشکلی مواجه شدید، لطفاً در نظرات به من اطلاع دهید.

با استفاده از روشی که در بالا توضیح داده شد، اصولاً می توانید محتویات یک پایگاه داده MySQL را به یک فایل csv صادر کنید. اما سپس داده های فیلدهای مختلف جدول به صورت انبوه و بدون جداکننده نوشته می شود که ممکن است در برنامه های مختلف کار با جداول که معمولاً با فایل های csv کار می کنند به خوبی نمایش داده نشوند.

به هر حال، OpenOffice اهمیتی نمی‌دهد :) به طور خودکار اطلاعات به‌دست‌آمده از روشی که ما محتوای پایگاه داده MySQL را به xls صادر می‌کردیم، محدود می‌کرد. من نمی دانم او چگونه این کار را انجام می دهد، اما توصیه می کنم از آن استفاده کنید :)

خوب، همان مایکروسافت آفیس اکسل تمام اطلاعات مربوط به یک رکورد را در جدول نمایش می دهد و آن را در یک سلول بدون هیچ گونه جداکننده می نویسد. فکر می کنم سایر ویرایشگرهای جدول نیز همین کار را انجام دهند.

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

و سپس به تدریج به روش دوم صادرات داده های MySQL به csv و xls نزدیک شدم که استفاده از خط فرمان MySQL است.

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

SELECT * از پایگاه داده_table به OUTFILE "path_and_file_name.csv" فیلدهای خاتمه یافته توسط "," محصور شده توسط """ خطوط پایان یافته توسط "\n";

در نتیجه اجرای آن، یک فایل csv در مسیری که هنگام فراخوانی مشخص کرده اید دریافت خواهید کرد که در اکثر ویرایشگرهای صفحه گسترده مدرن به درستی باز می شود. در هر صورت، یادآوری می کنم که فقط پس از اتصال به پایگاه داده MySQL، باید این دستور را اجرا کنید.

این دستور همچنین برای صادرات داده های MySQL به یک فایل xls برای نمایش صحیح در Microsoft Office Excel عالی است. فقط در این مورد ما نیازی به جداکننده نداریم، زیرا آنها با تقسیم اطلاعات به سلول ها تداخل خواهند داشت:

SELECT * از database_table به OUTFILE "path_and_file_name.xls"؛

با این حال، در عمل، همه چیز به این سادگی که من توضیح دادم نیست. هنگام اجرای دستور، ممکن است با خطای زیر در کنسول مواجه شوید که از تکمیل صادرات جلوگیری می کند:

ERROR 1290 (HY000): سرور MySQL با گزینه --secure-file-priv در حال اجرا است بنابراین نمی تواند این عبارت را اجرا کند.

دلیل آن این است که سرور MySQL شما با این گزینه راه اندازی شده است --secure-file-priv. من شخصاً با این مشکل روبرو شدم زیرا برای کار در کنسول از توزیع MySQL موجود در کیت WAMP OpenServer استفاده می کنم که به نوبه خود سرور MySQL را به این ترتیب راه اندازی می کند.

دو راه برای حل مشکل وجود دارد:

  • پارامترهای راه اندازی سرور MySQL را تغییر دهید
  • مسیر فایل خروجی نهایی MySQL را تغییر دهید

روش اول برای من خیلی پیچیده به نظر می رسید، زیرا ... من باید در پیکربندی OpenServer که با تمام شرایط پیش آمده توسط من نوشته نشده بود ، جستجو کنم 🙂 بنابراین ، تصمیم گرفتم مسیر دوم را انتخاب کنم. اگر به مشکل مشابهی برخورد کردید، بعد از من تکرار کنید.

ابتدا باید به خط فرمان MySQL بروید و یکی از دستورات زیر را اجرا کنید:

نمایش متغیرهایی مانند "secure_file_priv"؛ @@GLOBAL.secure_file_priv را انتخاب کنید.

نتیجه اجرای هر دو مقدار متغیر جهانی MySQL خواهد بود safe_file_priv، که حاوی مسیر دایرکتوری است که از طریق آن می توان عملیات صادرات و واردات داده MySQL را انجام داد (در آینده پیوندی به مقاله ای در مورد واردات داده ها).

آن ها هنگام استفاده از دستورات بارگذاری داده هاو SELECT... INTO OUTFILEفایل های صادر شده و وارد شده را فقط می توان در این فهرست قرار داد.

در مورد من، این متغیر به طور کلی تنظیم شده بود خالی، زیرا من، همانطور که قبلاً گفتم، از ابزارهای MySQL از توزیع موجود در OpenServer برای کار در کنسول استفاده می کنم. این مقدار نشان می دهد که عملیات صادرات و واردات داده های MySQL با استفاده از دستورات مشخص شده کاملاً بسته شده است.

همانطور که بعداً مشخص شد، این یک وضعیت رایج هنگام استفاده از سرورهای WAMP و MAMP جعبه‌دار است.

متأسفانه، در مورد من، استفاده از روش های معمول تغییر مقادیر متغیرهای سراسری MySQL امکان پذیر نبود:

SET variable_name = مقدار;

در نتیجه فقط خطای زیر را در کنسول دیدم:

خطای 1238 (HY000) در خط 1: متغیر "secure_file_priv" یک متغیر فقط خواندنی است.

در نتیجه، برای تغییر مقدار یک متغیر safe_file_privو عملیات صادرات و واردات را باز کنید، باید به فایل پیکربندی MySQL mysql.ini بروم، که در دایرکتوری ریشه توزیع MySQL قرار دارد، یا اگر MySQL با WAMP/LAMP/ شما همراه باشد، می توان به روش دیگری به آن دسترسی داشت. ساخت سرور MAMP.

به هر حال، اگر می خواهید مسیر دایرکتوری spool تبادل فایل را تغییر دهید، باید همین کار را انجام دهید.

در مورد من، این متغیر قبلاً در پیکربندی وجود داشت، فقط به شکل نظر:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

اگر آن را ندارید، آن را از ابتدا در بخش بنویسید (حداقل برای من آنجا قرار داشت).

من آن را حذف کردم و تصمیم گرفتم از آن به شکلی که نوشته شده است استفاده کنم. آن ها هنگام صادرات داده از MySQL و وارد کردن مجدد آن، فایل های من اکنون در یک فهرست ذخیره می شوند c:\openserver\userdata\temp\.

پس از تغییر پیکربندی (به هر حال، هر کدام)، فراموش نکنید که سرور خود یا سرویس جداگانه ای را که تنظیمات آن را ویرایش کرده اید، مجدداً راه اندازی کنید تا تغییرات اعمال شوند!

برای اطمینان، پس از راه اندازی مجدد سرور MySQL، متغیر را دوباره نمایش دهید safe_file_privو مقدار آن را در کلیپ بورد کپی کنید.

و اکنون باید دستور را مانند ابتدا فراخوانی کنیم، فقط قبل از نام فایلی که اطلاعات پایگاه داده MySQL در آن ذخیره می شود، مسیر ذخیره شده در متغیری که در حال تغییر هستیم را به شکل زیر بنویسید:

SELECT * از database_table به OUTFILE "secure_file_priv_value\file_name.csv";

پس از این، صادرات داده از MySQL در مورد من کار کرد.

نکته مهم! اگر با MySQL در ویندوز کار می کنید، فراموش نکنید که هنگام تعیین مسیر فایل، "\" را به "/" تغییر دهید، در غیر این صورت خطا خواهد بود. --secure-file-privهمچنان ظاهر خواهد شد.

این مقاله در مورد نحوه تخلیه پایگاه داده MySQL و جداول آن و همچنین خروجی داده ها از جداول MySQL در قالب های مختلف به پایان می رسد. نظرات خود را در نظرات بنویسید و گزینه های اسکریپت خود را که اغلب در عمل استفاده می کنید با همه به اشتراک بگذارید.

اگر مقاله را پسندیدید، می توانید با بازنشر مقاله در شبکه های اجتماعی یا از نظر مالی از فرم زیر از نویسنده تشکر کنید تا بتوانید هزینه هاست اولیه را بپردازید.

برای همه موفق باشید و دوباره شما را ببینم! 🙂

P.S.: اگر به یک وب سایت نیاز دارید یا نیاز به ایجاد تغییرات در یک موجود دارید، اما زمان یا تمایلی برای این کار وجود ندارد، می توانم خدمات خود را ارائه دهم.

بیش از 5 سال تجربهتوسعه وب سایت حرفه ای کار با PHP

این درس به موضوعات مهمی مانند صادرات پایگاه دادهو واردات پایگاه داده MySQL. ممکن است بپرسید اصلاً چرا پایگاه داده صادر می شود؟ به عنوان یک قاعده، این کار به منظور پشتیبان گیری از پایگاه داده انجام می شود، به طوری که، همانطور که می گویند، همیشه در دسترس باشد. از این گذشته، هیچ کس از شرایط فورس ماژور مصون نیست، مانند حوادث میزبانی، که می تواند منجر به از دست دادن اطلاعات شود. مثال دیگر می تواند حمله هکرهایی باشد که می خواهند به سایت شما آسیب برسانند. در واقع می توان از این قبیل نمونه ها زیاد باشد.

وارد کردن پایگاه داده زمانی استفاده می شود که شما نیاز دارید یک پایگاه داده را مجدداً در هاست فعلی خود بارگذاری کنید، یا زمانی که به هاست دیگری منتقل می شوید. این نیز اغلب در عمل توسط وب مسترها انجام می شود.

خودمون صادرات پایگاه دادهو واردات پایگاه داده- وظایف ساده هستند. ارزش یک بار انجام این اقدامات را دارد تا الگوریتم اجرای آنها را تا آخر عمر به خاطر بسپارید. بیایید ببینیم که چگونه همه اینها با مثال انجام می شود.

برای صادرات یک پایگاه داده، باید به پنل مدیریت میزبانی بروید و سپس به بخش پایگاه داده - MySQL Databases بروید.

پایگاه داده ای را که می خواهیم صادر کنیم (به phpMyAdmin بروید) انتخاب کنید. در این مثال پایگاه داده "cl209038" نامیده می شود.

1) در حالت اول، "سریع" را انتخاب کنید، فرمت را به عنوان SQL بگذارید و دکمه "OK" را فشار دهید. در نتیجه، یک نسخه از پایگاه داده در رایانه ما دانلود می شود.

2) در حالت دوم، "Normal" را انتخاب کنید. صفحه ای با تنظیمات صادرات پایگاه داده ظاهر می شود. تمام جداول را انتخاب کنید، سطح رمزگذاری و فشرده سازی را مانند تصویر زیر انتخاب کنید. بقیه، به عنوان یک قاعده، نیازی به تغییر ندارند. روی دکمه "OK" کلیک کنید و پایگاه داده به رایانه ما صادر می شود.

همین، همانطور که می بینید، صادرات پایگاه داده MySQL کار سختی نیست.

برای وارد کردن دیتابیس نیز باید به پنل مدیریت هاستینگ بروید و به قسمت با پایگاه داده MySQL بروید. در اینجا دو گزینه وجود دارد - یا باید یک پایگاه داده جدید ایجاد کنید یا به پایگاه داده موجود صادر کنید.

برای مثال، اگر سایت را به هاست دیگری منتقل کنیم، ایجاد یک پایگاه داده ضروری خواهد بود. اگر هنوز همان میزبانی را داریم و پایگاه داده قبلاً ایجاد شده است، می توانید به سادگی این پایگاه داده را انتخاب کنید و داده ها را دوباره در آن بارگذاری کنید. البته می توانید آن را حذف کنید، سپس یک (خالی) جدید ایجاد کنید و در آن آپلود کنید.

1) پایگاه داده از قبل وجود دارد. ما یک پایگاه داده را برای وارد کردن کپی خود از پایگاه داده انتخاب می کنیم. منوی واردات پایگاه داده ظاهر می شود.

فایل کپی پایگاه داده را که می خواهید وارد کنید انتخاب کنید. در صورت لزوم می توانید کدگذاری و قالب پایگاه داده را تغییر دهید. بعد، روی دکمه "OK" کلیک کنید. پس از وارد کردن، سیستم به ما اطلاع می‌دهد که آیا همه چیز درست پیش رفته است یا خطایی در طول فرآیند رخ داده است. اگر خطا رخ داد، می توانید سعی کنید پایگاه داده موجود در هاست را حذف کنید، سپس یک پایگاه داده خالی ایجاد کنید و دوباره پایگاه داده را وارد کنید.

2) ایجاد پایگاه داده جدید. به پنل مدیریت هاستینگ بروید و بخش دارای پایگاه داده MySQL را انتخاب کنید. وارد مدیریت پایگاه داده MySQL می شویم.

نام پایگاه داده و رمز عبور مورد نظر را برای آن مشخص کنید. روی دکمه "ایجاد" کلیک کنید. در نتیجه، یک پایگاه داده جدید (خالی) باید ایجاد شود - در آن باید یک کپی ذخیره شده قبلی از پایگاه داده خود وارد کنیم.

این تمام چیزی است که می خواستم در مورد صادرات و واردات پایگاه داده MySQL به شما بگویم. اگر در مورد این سوالات مشکلی دارید، نظرات خود را در مورد این درس بنویسید.

پایگاه های داده (یا به اختصار DB) در اکثر سایت ها دارای حجم (وزن) چند ده مگابایت (مگابایت) هستند. اندازه اولیه پایگاه داده در شروع پروژه های مختلف به ساختار خود سایت (CMS) بستگی دارد، اما پس از آن وزن آنها با هر بار ظاهر شدن یک رکورد جدید افزایش می یابد.

سوابق ممکن است شامل اطلاعاتی در مورد ثبت نام کاربر، نظرات، پیام های شخصی، محصولات، اخبار و سایر داده های ذخیره شده در پایگاه داده سایت باشد.

من این فرصت را داشتم که با چندین سایت کار کنم که حجم پایگاه داده آنها بیش از 500 مگابایت (مگابایت) و در برخی از آنها حتی به 2 گیگابایت (گیگابایت) رسیده است. از آنجایی که انتقال پایگاه های داده با این اندازه با استفاده از روش های استاندارد دشوار است (به دلیل محدودیت هاست و مرورگر)، چندین روش کاری را با شما در میان می گذارم که به شما در حل چنین مشکلاتی کمک می کند (مهاجرت بانک های اطلاعاتی بزرگ).

پایگاه داده های بزرگ MySQL را از طریق Sypex Dumper صادر کنید (دانلود کنید).

بنابراین، بیایید بررسی خود را برای حل مشکلات با یک گزینه ساده تر، یعنی با یک راه حل آماده، آغاز کنیم.

"Sypex Dumper" یک محصول نرم افزاری است که به زبان PHP نوشته شده است که به شما امکان می دهد بدون استفاده از phpMyAdmin با پایگاه های داده کار کنید. مزایای Sypex Dumper عبارتند از:

  1. چند زبانه (از بسیاری از زبان ها پشتیبانی می کند).
  2. یک نسخه رایگان از اسکریپت وجود دارد (برای اهداف ما این کاملاً کافی است).
  3. سرعت بالا در انجام کار.
  4. کار با پایگاه داده های بزرگ
  5. رابط کاربری راحت و شهودی.
  6. و بسیاری ویژگی های جالب دیگر.

این همان چیزی است که ما برای دانلود (انتقال) پایگاه های داده بزرگ استفاده خواهیم کرد.

برای صادرات (دریافت، دانلود) پایگاه داده یک سایت خاص برای استفاده بیشتر، باید موارد زیر را انجام دهید.

1. رایگان از وب سایت ما

2. sxdبه روشی مناسب برای شما

3. بعد به آدرس بروید (جایی که your_site.ru وارد شدن».

4. در صفحه ای که باز می شود (در صورت موفقیت آمیز بودن مجوز)، یک بار روی بخش « صادرات» در منوی بالا. اگر چندین پایگاه داده در دسترس کاربر است، پایگاه داده ای را که ما صادر خواهیم کرد (دانلود) را از لیست کشویی انتخاب کنید. می توانید بقیه تنظیمات را بدون تغییر رها کنید و روی " کلیک کنید اجرا کردن».


من می خواهم توجه داشته باشم، که می توانید نه کل پایگاه داده، بلکه فقط برخی از جداول آن را در صورت نیاز صادر کنید.

5. پس از اتمام فرآیند ذخیره سازی پایگاه داده (این را از طریق نوار پیشرفت می توانید درک کنید)، می توانید با کلیک بر روی دکمه مربوطه پایگاه داده مورد نیاز خود را دانلود کنید.


علاوه بر این، تمام پایگاه های داده صادر شده در طول مسیر در وب سایت شما ذخیره می شود /sxd/پشتیبان گیری/. اگر ذخیره پایگاه داده انجام نشد، پوشه را بررسی کنید پشتیبان گیریمجوز نوشتن 777 است.

این صادرات (دانلود) پایگاه داده را کامل می کند.

واردات (دانلود) پایگاه داده های بزرگ MySQL از طریق Sypex Dumper

در بالا به شما توضیح دادیم که چگونه پایگاه داده لازم را به دست آورید، اکنون باید آن را به پروژه دیگری منتقل کنید (وارد کردن) و برای این کار موارد زیر را انجام می دهیم.

1. رایگان از وب سایت ما

2. آرشیو را باز کنید و پوشه را در وب سایت آپلود کنید sxdبه روشی مناسب برای شما

3. به پوشه /sxd/پشتیبان گیری/پایگاه داده دریافت شده قبلی (دانلود شده) را بارگیری کنید.

4. بعد به آدرس بروید http://your_site.ru/sxd/index.php(جایی که your_site.ru– دامنه وب سایت شما)، پس از آن یک فرم ورود اطلاعات در مقابل شما باز می شود. در آن داده های کاربری را که حق مدیریت پایگاه داده مورد نیاز شما را دارد نشان می دهید و روی " کلیک کنید وارد شدن».

5. در صفحه ای که باز می شود (در صورت موفقیت آمیز بودن مجوز)، یک بار روی بخش « وارد كردن» در منوی بالا. اگر چندین پایگاه داده در دسترس کاربر است، پایگاه داده ای را که داده ها را در آن وارد می کنیم (بارگذاری) از لیست کشویی انتخاب کنید. می توانید تنظیمات باقیمانده را بدون تغییر رها کنید و بر روی " کلیک کنید اجرا کردن».


من می خواهم توجه داشته باشمکه می توانید نه کل پایگاه داده، بلکه فقط برخی از جداول آن را در صورت نیاز وارد کنید.

6. پس از تکمیل فرآیند وارد کردن (بارگیری) پایگاه داده (این را می توانید با نوار پیشرفت درک کنید)، می توان کار را تکمیل شده در نظر گرفت.


پایگاه داده های بزرگ MySQL را از طریق ترمینال SSH صادر کنید (دانلود کنید).

SSH یک پروتکل شبکه است که به شما امکان می دهد از راه دور (از طریق دستورات ویژه) یک سیستم یا سرور را مدیریت کنید. در ویندوز برنامه های زیادی برای کار با این پروتکل وجود دارد که محبوب ترین آنها "PuTTY" است.

در برخی از سایت های میزبانی، مانند، به عنوان مثال، یک ترمینال داخلی درست در کنترل پنل وجود دارد. اجازه دهید راه دور نرویم و با مثال او مشکلی را که در عنوان توضیح داده شده در نظر بگیریم. شایان ذکر استکه عملیات توضیح داده شده در زیر را می توان در یک کلاینت SSH جداگانه انجام داد.

1. ترمینال را راه اندازی کنید. به نظر می رسد این است:


2. اگر از طریق یک برنامه شخص ثالث به سرور متصل می شوید، با وارد کردن داده های مناسب به آن وارد شوید (می توانید آن را در کنترل پنل هاست خود یا از ارائه دهنده هاست خود دریافت کنید).

دومین- این:

Mysqldump -u USERNAME -p DATABASE > backup.sql

مستقیماً خود صادرات، جایی که:

نام کاربری– ورود کاربری که به پایگاه داده دسترسی دارد.

پایگاه داده– نام پایگاه داده ای که می خواهیم صادر کنیم.

backup.sql– نام فایلی که پایگاه داده در آن ذخیره می شود و مسیر مربوط به . با این طراحی دیتابیس در روت هاست ذخیره می شود.

4. در مرحله سوموارد"روی صفحه کلید. توجه داشته باشید

هنگامی که سرور دوباره آماده پذیرش دستورات از طریق SSH شد، این بدان معنی است که صادرات پایگاه داده کامل شده است و می توانید آن را از طریق FTP یا از طریق مدیر فایل میزبانی دانلود کنید.

فرآیند صادرات (و واردات) در SSH پخش نمی شود، و اگر پایگاه داده شما بسیار بزرگ است، صبور باشید، زیرا ممکن است پس از بیش از 20 دقیقه پاسخی از سرور دریافت کنید.

واردات (دانلود) پایگاه داده های بزرگ MySQL از طریق ترمینال SSH

ما قبلاً متوجه شده ایم که SSH در بالا چیست، و اکنون اجازه دهید نحوه وارد کردن یک پایگاه داده قبلاً دانلود شده را به پروژه دیگری شروع کنیم.

1. به ریشه شماهاست، پایگاه داده دانلود شده قبلی را به روشی راحت برای شما دانلود کنید.

2. از طریق SSH به هاست/سرور خود متصل شوید.

بنابراین ما قطعا به ریشه میزبانی می رویم، و دومین- این:

بنابراین، ما یک لیست کامل از فایل ها و دایرکتوری های دایرکتوری فعلی دریافت می کنیم. بیایید مطمئن شویم که پایگاه داده قبلاً بارگیری شده ما در میان آنها باشد.

4. اگر همه چیز خوب است و پایه در جای خود قرار دارد، دستور نهایی را وارد کنید:

Mysql -u USERNAME -p پایگاه داده< backup.sql

نام کاربری– ورود کاربری که به پایگاه داده دسترسی دارد.

پایگاه داده– نام پایگاه داده ای که داده ها را به آن وارد می کنیم.

backup.sql– نام فایلی که دانلود می شود و مسیر مربوط به . با این طراحی دیتابیس از روت هاست وارد می شود.

5. پس از وارد کردن دستور، از شما خواسته می شود که رمز عبور کاربری که مشخص کرده اید را وارد کنید در مرحله چهارم. رمز عبور خود را وارد کرده و روی " وارد"روی صفحه کلید. توجه داشته باشیدکه وارد کردن رمز در ترمینال SSH نشان داده نمی شود، یعنی چه رمز عبور را وارد کنید و چه آن را Paste کنید، همیشه جای آن خالی خواهد بود.

پس از این، زمانی که سرور دوباره آماده پذیرش دستورات از طریق SSH شد، به این معنی است که وارد کردن پایگاه داده به پایان رسیده است و می توانید به کار روی پروژه ادامه دهید.

اگر از پایگاه داده خود نسخه پشتیبان تهیه کرده اید یا به یک فایل SQL صادر کرده اید، می توانید آن را از طریق phpMyAdmin به یکی از پایگاه های داده MySQL حساب میزبانی خود وارد کنید.

توجه داشته باشید.در پایگاه داده MySQL نباید خط CREATE DATABASE وجود داشته باشد. در غیر این صورت، ممکن است واردات با شکست مواجه شود.

رابط phpMyAdmin به شما اجازه می دهد تا 8 مگابایت داده را در یک زمان وارد کنید. اگر نیاز به وارد کردن یک فایل بزرگتر دارید، آن را به چند قسمت 8 مگابایتی تقسیم کنید.

توجه!اگر پایگاه داده ای را برای میزبانی مدیریت شده وردپرس وارد می کنید تا وب سایت خود را روان نگه دارید.

وارد کردن فایل های SQL به پایگاه داده های MySQL با استفاده از phpMyAdmin

پس از این، فایل SQL اجرا می شود و پایگاه داده ای را که در فایل SQL انتخاب کرده اید به روز می کند. بازیابی پایگاه داده ممکن است چند دقیقه طول بکشد.

توجه داشته باشید.اگر پیغام خطای Script timeout گذشت، اگر می‌خواهید وارد کردن را به پایان برسانید، لطفاً همان فایل را دوباره ارسال کنید و واردات از سر گرفته می‌شود، می‌توانید بلافاصله همان فایل را انتخاب کرده و روند را از سر بگیرید.