Импортиране на бази данни mysql. Как да импортирате голяма MySQL база данни, заобикаляйки ограниченията на phpMyAdmin

24.03.2023

Добър ден приятели, днес ще научим как да правим. За какво е, можете да зададете въпрос. Преди всичко експорт на база даннитрябва да се прави периодично, за да не загубите важна за вас информация при спешни случаи. Експортирането ще бъде малък файл, който ще съхранява цялата информация за базата данни. За експорт на база даннитрябва да отидете на PHPMyAdmin и да щракнете върху базата данни, която ви интересува. След това ще видите всички таблици в него и, без да влизате в тях, щракнете върху бутона на менюто, наречен експортиране. Пред вас ще се появи следната страница:


Съветвам ви да изберете бърз метод за експортиране и също така да посочите формата SQL. След това можете да натиснете OK. Ще видите прозорец с молба да запазите файла.


Записвате файла на мястото, от което се нуждаете, основното е да запомните къде сте го записали, защото това е много важно за нас.
Що се отнася до обичайния начин на износ. Можете също да го използвате, ако имате нужда от него, има много допълнителни настройки, които можете да зададете при експортиране. Например, изберете необходимите таблици от базата данни, посочете кодирането и много други. Ако се интересувате от тази настройка, можете да я видите. Но няма да задълбаваме в тази настройка.
След като запазите файла на вашия компютър, ще ви помоля да изтриете базата данни. Как да стане това, няма да ви обяснявам, защото вече сме минали през това. Не се страхувайте да изтриете, ние ще върнем всичко с вас на мястото му.
Време е да се заемете импортиране на база данни. Отидете в менюто за импортиране.


Избираме прегледа на вашия компютър и посочваме пътя до нашия файл. И натиснете OK. Както виждате, имате грешка. Не се тревожете, работата е там, че не импортирахме самата база данни, а само всички нейни таблици. Затова първо създайте база данни, влезте в нея и щракнете върху бутона за импортиране, след като сте направили всичко по-горе. Като щракнете върху бутона OK, ще успеете и ако сте направили всичко правилно, не трябва да се появяват грешки.


Както можете да видите, нашата таблица се появи отново на мястото си и всички данни в нея бяха запазени. Сега разбирате каква чудесна възможност експортиране и импортиране на база данни в PHPMyAdmin. В крайна сметка, ако загубите за един ден всичките си разработки в продължение на много години, благодарение на този файл можете да върнете всичко. С това се сбогувам скоро с вас.

Поздрави приятели! 🙂

Днес реших да продължа да говоря за работата с MySQL в конзолата и да обърна внимание на процедурата за експортиране на MySQL база данни.

В тази статия ще говоря за това как да изхвърля MySQL базата данни, както и да качвам данни от MySQL във файл на Excel и csv формат.

Ще разгледаме различни варианти за извличане на информация от: създаване на дъмп на една и няколко бази данни, експортиране на данни от отделни таблици и резултати от произволни ИЗБЕРЕТЕзаявки.

И също така нека да поговорим за това как да показвате данни от базата данни на MySQL в конзолата на сървъра и командния ред на MySQL.

В тази статия няма да говоря за това как да експортирате данни с помощта на phpMyAdmin и други визуални инструменти.

Първо, защото в мрежата вече има достатъчно материали по тази тема. Освен това висококачествен материал, който не изгарям от желание да копи-пействам.

И второ, аз самият разгледах накратко процеса на извеждане на информация от MySQL база данни в SQL файл в една от моите статии, за които говорих.

Така че, ако не сте професионален разработчик или системен администратор, който може да намери полезна информация за работата с конзолата и сте дошли само за инструкции относно експортирането на базата данни в phpMyAdmin, тогава можете да се ограничите до четене на информацията от връзката по-горе.

Искам да ме разберете правилно: не искам да ви обидя по никакъв начин, а просто искам да прекарате времето си с максимална полза за каузата и да получите това, което търсите.

С това приключвам уводната част и преминаваме към преглед на конзолните команди за създаване на дъмп на MySQL базата данни, който реших да сортирам по количеството съхранявани данни: от експортиране на цялата база данни до отделни таблици и резултати от произволни заявки .

Създаване на дъмп на MySQL база данни през конзолата

Още в началото искам да направя едно малко уточнение.

Основен дъмпе файл с набор от SQL команди, който при стартиране ви позволява да създавате бази данни и таблици, както и да ги попълвате с информация. Дъмп е необходим за тези, които искат да изтеглят MySQL база данни, за да я копират на друг сървър или в рамките на съществуващ.

Освен това, ако някой не е запознат, резервното копие на базата данни на MySQL всъщност е нейното изхвърляне, направено за определен период от време, което ви позволява да възстановите структурата на базата данни и данните, ако е необходимо.

Експорт на данни- това е просто извличане на информация от таблици в текстова форма за по-нататъшна работа с текстови или графични редактори.

Следователно командите за тези действия ще бъдат малко по-различни.

За да създадете дъмп на база данни, MySQL има вградена помощна програма, наречена mysqldump, за да се използва извън командния ред на MySQL в конзолата на сървъра или друга обвивка.

И така, за най-простия и често срещан вариант - експортиране на данни от конкретна база данни в MySQL конзолата, за да ги прехвърлите на друг сървър или вътрешно копие, трябва да изпълните следната команда:

mysqldump -u потребителско име -p име_на_база_данни > име_на_път_и_име_на_файл_на_думп

Тази помощна програма може да създава дъмпове на MySQL база данни само под формата на файлове с SQL команди, така че каквото и разширение да изберете за вашия файл, във всички случаи съдържанието му ще бъде същото. И не забравяйте да проверите правата за запис на директорията, в която ще се намира, преди да експортирате информация от MySQL, за да е възможно създаването на файла.

Ако внезапно трябва да направите дъмп с всички бази данни на сървъра, използвайте следната команда:

mysqldump -u потребителско име -p --all-databases > path_and_dump_file_name

За да изхвърлите само няколко конкретни бази данни, трябва да извикате mysqldump със следните опции:

mysqldump -u потребителско име -p --databases име_на_база_данни1, име_на_база_данни2, ... > път_и_име_на_файл_на_файл

В резултат на това във всеки случай ще получите дъмп на MySQL база данни, съдържащ команди за създаване на структурата на съдържащите се таблици (полета, техни типове, индекси, ключове и т.н.), както и операции за попълването им с данни.

Тази опция е подходяща само за възстановяване и копиране на цели бази данни.

Как да направите резервни копия на определени MySQL таблици и да получите техните данни в четима форма, ще бъде обсъдено допълнително.

Изхвърляне на MySQL таблица и експортиране на данни

За да създадем дъмп на определени таблици на MySQL база данни, се нуждаем от същата помощна програма mysqldump, извикан със следните параметри:

mysqldump -u потребителско име -p име_на_база_данни_име_на_таблица1, име_на_таблица2, ... > път_и_име_на_файл_на_файл

Дори когато извиквате mysqldump, можете да посочите необходимите таблици като стойност на параметър --маси, при използване на който параметърът --бази даннище бъдат игнорирани:

mysqldump -u потребителско име -p --databases име_на_база_данни1, име_на_база_данни2 --tables име_на_таблица1, име_на_таблица2, ... > път_и_име_на_файл_на_файл

Горният пример ще покаже следната грешка:

Mysqldump: Получих грешка: 1049: Неизвестна база данни „име_на_база_данни1“ при избор на базата данни

Както можете да видите, ще се използва само най-новата база данни от списъка с посочените. По принцип това поведение е съвсем логично, т.к. всички бази данни може да не съдържат посочените таблици.

Добре, имаме дъмп на таблиците на базата данни на MySQL. Може да се използва за тяхното възстановяване или копиране заедно със структурата.

Но какво ще стане, ако просто трябва да получите информацията, съхранена в тях и за предпочитане в четима форма, така че да можете да я изпратите на мениджъра и да я видите в обикновен текстов редактор или редактор на електронни таблици? MySQL разполага и с инструментите за това.

Опцията за извикване на помощната програма ще ни помогне да постигнем целите си. mysqlот конзолата с определени параметри:

Mysql -u потребителско име -p име_на_база_данни -e "ИЗБЕРЕТЕ * ОТ име_на_таблица"

Тази команда ще ни позволи да изпълним заявка към необходимата база данни и да изведем резултата в конзолата, без да отиваме в командния ред на MySQL.

Е, за да не извеждате данни към конзолата, а да ги записвате във файл, трябва да допълните командата, както следва:

Mysql -u потребителско име -p -e "SELECT * FROM име на таблица" > path_and_filename

Благодарение на тези конструкции можем не само да получим данните, съхранявани във всички полета на таблицата, но и в конкретни. За да направите това, вместо символа за заместване (*), е достатъчно да регистрирате необходимите, разделени със запетая.

В резултат на това на изхода ще получим обикновен текстов файл, който ще съдържа имената на полетата под формата на заглавка и информация за тях за всички записи. Може да се отвори в обикновен текстов редактор, независимо каква разделителна способност сте му дали при създаването му.

Ако искате да експортирате данни от MySQL база данни във формат xls или csv, така че полученият файл да се показва правилно в редакторите на електронни таблици, тогава как да направите това ще бъде обсъдено малко по-късно 🙂

Създаване на резервни копия и извличане на данни от MySQL база данни с помощта на заявки

Говорихме за това как да изхвърлите MySQL база данни - една и няколко, както и техните отделни таблици. Но понякога на практика има случаи, когато трябва да експортирате набор от данни, който не е ограничен до една таблица. Или трябва да изберете само някои данни от таблицата.

Разработчиците на корпоративни проекти особено често се сблъскват с това, когато мениджърите искат от тях да предоставят всякакви статистически данни. Или когато трябва да направите резервно копие на определена част от таблицата за бързото й възстановяване.

За архивиране се нуждаем от същата помощна програма mysqldump, който трябва да се нарича така:

Mysqldump -u потребителско име -p dbname име на_таблица --където "търсене" > път_и_име_на_файл_на_файл

В резултат на това ще получим файл с SQL команди за създаване на таблица с цялата й структура, която след създаването ще бъде попълнена с информация, избрана чрез заявка за търсене.

Ако просто трябва да получим данните, съхранени в една или повече таблици, тогава трябва да променим командата, използвана в предишния случай, за да изберем всички данни в таблица, само с няколко пояснения:

Mysql -u потребителско име -p -e "SELECT * FROM table_name WHERE търсене" > path_and_file_name

Както разбирате, в допълнение към различни разяснения, посочени в заявката, използвайки директивата КЪДЕТО, можете да използвате други SQL конструкции: ПРИСЪЕДИНЯВАНЕ, СЪЮЗи т.н.

Могат да се събират всякакви статистики 🙂

Същото действие може да се извърши и от командния ред на MySQL със следната команда:

SELECT * FROM database_table WHERE търсене INTO OUTFILE "path_and_file_name";

Тази команда е предназначена само за създаване на файлове с резултатите от селекцията. Освен това резултатите могат не само да бъдат експортирани във файлове, но и записани в променливи, а изходните данни могат да бъдат форматирани по различни начини.

Ако горното е вашият случай, тогава можете да намерите пълния списък с параметри и опции за извикване на тази команда тук - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

В края на моята кратка обиколка на mysqldump, искам да дам опция за извикване на команда със списък от параметри за създаване на оптимизиран дъмп на MySQL базата данни и таблиците, възстановяването на базата данни и отделните таблици, от което ще отнеме по-малко време от с нормално обаждане:

mysqldump -u потребителско име -h MySQL_сървър_хост_или_IP -p --no-autocommit --opt име_на_база_данни > име_на_път_и_име_на_файл_на_файл;

В името на експеримента използвах тази опция, за да изхвърля 143 MB MySQL база данни. Последвалото възстановяване отне 59 секунди време срещу 1 минута и 3 секунди, когато базата данни беше възстановена от дъмп, направен чрез извикване на mysqldump без специални опции.

Съгласен съм, че това е дреболия. Но това е само в случай на дадено количество данни. Ако използвате тази техника, когато създавате дъмп, по-голям от 1GB, тогава разликата ще бъде по-значителна.

Ако срещнете такава ситуация, не забравяйте първо да опаковате дъмпа на базата данни на MySQL в архив. tar.gz е най-добрият. Тогава възстановяването ще отнеме още по-малко време.

Експортиране на данни от MySQL към Excel и csv файлове

Не напразно комбинирах информация за изхода на информация от MySQL в тези два формата в един блок, т.к. те са много сходни, използват се приблизително по един и същ начин (за структуриране на информация под формата на таблици) и същите команди ще бъдат извикани за експорт.

Както знаете, единствената съществена разлика между тези формати е, че разширенията xls и xlsx имат файлове, създадени в Microsoft Office Excel, който работи само под Windows, докато csv файловете са по-универсални и операциите с тях са възможни в много редактори.

Това не означава, че xls няма да се отвори никъде освен Microsoft Office Excel. Същият OpenOffice потвърждава обратното.

Но за тази възможност тази поддръжка трябва да присъства в софтуерния продукт. csv файловете са четими дори в обикновен текстов редактор като Notepad, само тази форма няма да бъде напълно четлива.

Като начало можете да експортирате само резултатите от SQL заявки в xls или csv, с които се научихме да работим по-рано, защото. цялата база данни в един файл няма да може да се покаже в една операция.

Първо, това не е оптимално, т.к такъв файл е малко вероятно да се отвори с голямо количество информация, съхранявана в базата данни. И второ, не е ясно как да разбием информацията в таблици и полета във файла.

Не, разбира се е възможно да се направи това, но е малко вероятно една команда да направи това и като цяло е малко вероятно някой да направи това в конзолата. Мисля, че за тези цели ще ви трябва специален софтуер или поне скрипт.

Ако изведнъж знаете как можете да експортирате информация от цялата база данни на MySQL в един или повече xls файла в конзолата наведнъж, тогава пишете за това в коментарите. Мисля, че четенето за това ще бъде полезно за мнозина.

Така че, ако говорим за това как да експортирате данни от MySQL в xls и csv, тогава можете да го направите директно в конзолата на сървъра чрез помощната програма mysqlили в работата, с която ви запознах в предишната си статия.

Да започнем по ред.

Можете да експортирате данни от MySQL база данни в csv и xls формати директно в конзолата на сървъра, като използвате следните команди.

На linuxсистеми:

Mysql -u потребителско име -d dbname -p -e "SELECT * FROM dbtable;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > път_и_име_на_файл. csv

По принцип, ако е абсолютно необходимо, можете да използвате тази команда, за да експортирате MySQL данни в Excel файл. Но, честно казано, на практика не се занимавах с данни и какво ще излезе в крайна сметка - нямам представа, защото. Сега работя под Windows. Ако използвате тази команда под Linux, моля, напишете в коментарите за резултатите от вашата работа. Мисля, че информацията ще бъде интересна за всички.

На Windows:

Експортирането на данни от MySQL таблици в csv с горната команда, за съжаление, няма да успее в този случай, тъй като Windows, за разлика от Linux, няма вградена конзолна команда за работа с потоци, която е sed в Linux.

Инсталирайте го, разбира се, можете, но твърде много проблеми. Като алтернатива можете също да използвате CygWinе конзолен емулатор на Linux за Windows системи.

Е, ако вече сте го инсталирали. В противен случай експортирането на данни от MySQL базата данни по избрания начин ще ни донесе твърде много проблеми.

Но извличането на информация в xls файл е толкова лесно, колкото 5 копейки 🙂 Много е лесно да го стартирате по следния начин, който аз лично опитах:

Mysql -u потребителско име -d dbname -p -e "SELECT * FROM dbtable;" > път_и_име_на_файл.xls

Този файл се отвори в Microsoft Office Excel без никакви проблеми. Единственото нещо е, че при отваряне се показва съобщение, което предупреждава, че действителният формат на отваряния файл се различава от указаното разширение.

Но при потвърждаване на действието документът се отвори без затруднения - цялата информация беше разделена на клетки във формата, в която се съхраняваше в самата таблица.

Не знам, може би при извършване на конкретни действия в Microsoft Office Excel в бъдеще ще възникнат проблеми, не копах толкова дълбоко. Поне в обичайния изглед на данните не попаднах на нищо необичайно.

Ако срещнете някакви проблеми в процеса на използване на xls файла, експортиран от MySQL, в тази програма или в други, моля, уведомете ме в коментарите.

По описания по-горе начин можете по принцип да експортирате съдържанието на MySQL базата данни в csv файл. Но тогава данните от различни полета на таблицата ще бъдат записани групово, без разделители, което може да бъде лошо показано в различни програми за работа с таблици, в които те обикновено работят с csv файлове.

Между другото, OpenOffice не се интересува 🙂 Той автоматично демаркира информацията, получена от начина, по който експортирахме съдържанието на базата данни MySQL в xls. Не знам как го прави - но препоръчвам да го използвате 🙂

Е, същият Microsoft Office Excel показа цялата информация, съответстваща на един запис в таблицата, записвайки я в една клетка без никакви разделители. Мисля, че други редактори на електронни таблици ще направят същото.

Следователно, когато експортирате MySQL база данни в csv файлове, трябва да направите това, като разделите информацията със специални знаци, които се приемат от редакторите.

И тук плавно се приближих до втория начин за експортиране на MySQL данни в csv и xls, който е да използвам командния ред на MySQL.

И така, за да експортираме MySQL данни в csv файл по този начин, имаме нужда от следната команда:

SELECT * FROM database_table INTO OUTFILE "path_and_file_name.csv" ПОЛЕТА, ЗАВЪРШВАНИ С "," ОГРАДЕНИ С """ РЕДОВЕ, ЗАВЪРШВАНИ С "\n";

В резултат на неговото изпълнение ще получите csv файл по пътя, който сте посочили при извикването му, който ще се отвори правилно в повечето съвременни редактори на електронни таблици. За всеки случай ви напомням, че трябва да изпълните тази команда само след като се свържете с базата данни MySQL.

Тази команда също е чудесна за експортиране на MySQL данни в xls файл за правилно показване в Microsoft Office Excel. Само в този случай нямаме нужда от разделители, защото те ще попречат на разграждането на информацията в клетки:

SELECT * FROM database_table INTO OUTFILE "path_and_file_name.xls";

На практика обаче не всичко е толкова просто, колкото описах. По време на изпълнение на командата може да срещнете следната грешка в конзолата, която не позволява експортирането да завърши:

ГРЕШКА 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 защитен_файл_priv, който съдържа пътя до директорията, чрез която могат да се извършват операции за експортиране и импортиране на MySQL данни (в бъдеще връзка към статията за импортиране на данни).

Тези. при използване на команди ЗАРЕДИ ДАННИИ ИЗБЕРЕТЕ... ВЪВ ИЗХОДекспортираните и импортираните файлове могат да се намират само в тази директория.

В моя случай тази променлива изобщо имаше зададена стойност НУЛА, защото Аз, както вече казах, използвам MySQL помощните програми от дистрибуцията, включена в OpenServer, за да работя в конзолата. Тази стойност показва, че операциите за експортиране и импортиране на MySQL данни, използващи посочените команди, са затворени напълно.

Както се оказа по-късно, това е често срещана ситуация при използване на WAMP и MAMP сървъри в кутия.

За съжаление не беше възможно да се използват обичайните методи за промяна на стойностите на глобалните променливи на MySQL в моя случай:

SET име_на_променлива = стойност;

В резултат на това видях само следната грешка в конзолата:

ГРЕШКА 1238 (HY000) на ред 1: Променливата "secure_file_priv" е променлива само за четене.

И накрая, за да промените стойността на променлива защитен_файл_privи отворя операциите за експортиране и импортиране, трябваше да вляза в MySQL конфигурационния файл mysql.ini, който се намира в главната директория на разпределението на MySQL или може да бъде достъпен по друг начин, ако MySQL е включен във вашия WAMP/LAMP/ Изграждане на MAMP сървър.

Между другото, ако искате да промените пътя до директорията на буфера за обмен на файлове, ще трябва да направите същото.

В моя случай тази променлива вече съществуваше в конфигурацията, само в коментирана форма:

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

Ако го нямате, напишете го от нулата в секцията (поне го имам там).

Разкоментирах го и реших да го използвам във вида, в който е написан. Тези. когато експортирате данни от MySQL и ги импортирате обратно, файловете ми вече ще се съхраняват в директорията c:\openserver\userdata\temp\.

След като промените конфигурацията (всяка, между другото), не забравяйте да рестартирате вашия сървър или отделна услуга, чиито настройки сте коригирали, ако е възможно, за да влязат в сила промените!

За да сте сигурни, след като рестартирате MySQL сървъра, покажете отново променливата защитен_файл_privи копирайте стойността му в клипборда.

И сега трябва да извикаме командата, както в началото, само преди името на файла, в който ще се записва информация от MySQL базата данни, напишете пътя, записан в променливата, която променяме, в следния вид:

SELECT * FROM database_table INTO OUTFILE "value_secure_file_priv\file_name.csv";

След това експортирането на данни от MySQL работи в моя случай.

Важен момент! Ако работите с MySQL под Windows, тогава не забравяйте да промените "\" на "/", когато посочвате пътя до файла, в противен случай грешка с --secure-file-privтака или иначе ще продължи да се показва.

Тази статия за това как да изхвърлите MySQL базата данни и нейните таблици, както и как да изведете данни от MySQL таблици в различни формати, приключва. Напишете отзивите си в коментарите и споделете с всички ваши опции за скриптове, които използвате на практика най-често.

Ако сте харесали статията, можете да благодарите на автора, като публикувате отново статията в социалните мрежи или финансово, като използвате формата по-долу, за да можете да платите за хостинг.

Успех на всички и до скоро! 🙂

P.S.: ако имате нужда от уеб сайт или трябва да направите промени във вече съществуващ, но нямате време и желание за това, мога да предложа услугите си.

Над 5 години опитпрофесионална изработка на уебсайтове. Работи с PHP

Често ме питат как голяма MySQL база данни може да бъде импортирана в сървър. Известно е, че по подразбиране phpMyAdmin има ограничения за размера на импортираната база данни.

Ако вашият дъмп не надвишава много допустимия лимит, можете да го разделите на няколко части и да го импортирате в няколко преминавания. Това е оправдано, ако например ограничението е 2Mb, а вашата база данни е с размер 5-10Mb. Ясно е, че "разрязването" на 100MB база данни на 50 части е доста времеемък и скъп процес от гледна точка на времеви ресурси.

Има няколко варианта за решаване на този проблем.

Редактиране на конфигурацията на уеб сървъра

Няма специални проблеми с това на VDS / VPS, просто трябва да коригирате конфигурацията. А именно, в php.ini увеличете допустимите максимални стойности за файлове, качени на сървъра, максималния размер за файлове, прехвърлени чрез метода POST:

Post_max_size = 2000M upload_max_filesize = 2000M

Освен това, ако вашата база данни е много голяма, трябва да увеличите максимално допустимото време за изпълнение на скрипта.

max_execution_time = 32000 max_input_time = 32000

И за всеки случай можете да увеличите размера на допустимото количество RAM:

памет_лимит = 512M

След като направите промени, не забравяйте да рестартирате уеб сървъра.

Ясно е, че този метод не е подходящ за виртуален хостинг, т.к. това не предполага възможност за редактиране на конфигурации.

Sypex Самосвал

Можете да използвате софтуер на трети страни. И първото приложение, на което си струва да обърнете внимание, е Sypex Dumper.

След като го използвах за първи път преди много години и оцених всичките му възможности и предимства, мога спокойно да го определя като „Must Have“. Sypex Dumper е PHP сървърно приложение, което не изисква инсталация. Достатъчно е да го копирате например в корена на вашия сайт в sxd директорията и да го извикате в браузъра: http://Your_Site/sxd/. Струва си да се отбележи, че първо трябва да поставите дъмп на вашата база данни в директорията за архивиране. След като скриптът се инициализира, ще видите панел за оторизация за свързване към базата данни. Въведете вашето потребителско име и парола. Хостът и портът не са задължителни само ако са специфични.

След оторизацията можете да преминете директно към импортирането на базата данни. В полето "База данни"базата данни, към която сте свързани, ще бъде избрана и в полето "файл"ще видите дъмпа, който сте качили по-рано в директорията за архивиране.

В повечето случаи вече не са необходими допълнителни настройки и можете спокойно да стартирате импортирането, като щракнете върху бутона "Изпълни". Импортирането, в зависимост от размера на базата данни и скоростта на вашата интернет връзка, може да отнеме известно време. По време на импортирането можете да видите кои таблици в момента се импортират в базата данни. След завършване на скрипта ще видите дневника за изпълнение. Изглежда нещо подобно:

Това всъщност е всичко - базата данни е импортирана!

Конзола

Импортиране през конзолата няма да се разглежда. Мисля, че хората, които използват конзолата без мен, знаят как да импортират всяка база данни. А за обикновените потребители без специално обучение е по-добре да не се намесват там. Тъй като изпълнението на някои команди може да доведе до сериозни последствия, до пълен срив на сървъра.

Накрая

Не се наемам да твърдя, че Sydex Dumper е единственото и правилно решение. Има и други по-елегантни начини, които изискват от потребителя определени познания и подходящ достъп до настройките на сървъра.

Но в споделена хостинг среда, Sydex Dumper със сигурност ще бъде вашият незаменим помощник.

Абонирайте се за моята телеграма и бъдете първите, които получават нови материали, включително тези, които не са на сайта.

Базите данни (или накратко DB) на повечето сайтове имат размер (тегло), равен на няколко десетки Mb (мегабайта). Първоначалният размер на базата данни при стартиране на различните проекти зависи от структурата на самия сайт (CMS), но след това теглото им нараства с всеки нов запис.

Записите могат да бъдат информация за потребителска регистрация, коментари, лични съобщения, продукти, новини и други данни, съхранявани в базата данни на сайта.

Имах възможност да работя с няколко сайта, чийто размер на базите данни надхвърляше 500 MB (мегабайта), а на някои дори достигаше 2 GB (гигабайта). Тъй като базите данни с такъв размер са трудни за прехвърляне чрез стандартни методи (поради ограниченията на хостинга и браузъра), ще споделя с вас няколко работни метода, които ще ви помогнат при решаването на такива задачи (миграция на големи бази данни).

Експортиране (изтегляне) на големи MySQL бази данни чрез Sypex Dumper

И така, нека започнем с вас разглеждането на решаването на поставените задачи с по-лесен вариант, а именно с готово решение.

"Sypex Dumper" е софтуерен продукт, написан на PHP, който ви позволява да работите с бази данни без да използвате phpMyAdmin. Предимствата на "Sypex Dumper" включват:

  1. Многоезичен (поддържа множество езици).
  2. Има безплатна версия на скрипта (това е напълно достатъчно за нашите задачи).
  3. Висока скорост на изпълнение на задачата.
  4. Работа с големи бази данни.
  5. Удобен и ясен интерфейс.
  6. И много други интересни "чипове".

Ще ги използваме за изтегляне (прехвърляне) на големи бази данни.

За да експортирате (получите, изтеглите) базата данни на вашия конкретен сайт за по-нататъшното му използване, трябва да направите следното.

1. безплатно от нашия уебсайт.

2. sxdпо удобен за вас начин.

3. След това отидете на (Където your_site.com Да вляза».

4. На страницата, която се отваря (с успешна авторизация), щракнете 1 път върху секцията " Експортиране» в горното меню. Ако няколко бази данни са достъпни за потребителя, изберете тази, която ще експортираме (изтеглим) от падащия списък. Останалите настройки могат да бъдат оставени непроменени и щракнете върху " Бягай».


искам да отбележаче не можете да експортирате цялата база данни, а само някои от нейните таблици, ако е необходимо.

5. След като процесът на запазване на базата данни приключи (можете да разберете това по лентата за напредък), можете да изтеглите базата данни, от която се нуждаете, като щракнете върху съответния бутон.


В допълнение, всички експортирани бази данни ще бъдат съхранени на вашия сайт по пътя. /sxd/резервно копие/. Ако запазването на базата данни е неуспешно, проверете дали папката архивиранеразрешенията за запис са 777.

Това завършва експортирането (изтеглянето) на базата данни.

Импортиране (зареждане) на големи MySQL бази данни чрез Sypex Dumper

По-горе обсъдихме с вас начин за получаване на необходимата база данни, сега трябва да я прехвърлите (импортирате) в друг проект и за това правим следното.

1. безплатно от нашия уебсайт.

2. Разархивирайте архива и качете папката на сайта sxdпо удобен за вас начин.

3. Към папка /sxd/резервно копие/заредете предварително получената (изтеглена) база данни.

4. След това отидете на http://your_site.ru/sxd/index.php(Където your_site.com– домейна на вашия сайт), след което пред вас ще се отвори форма за въвеждане на данни. В него посочвате данните на потребителя, който има права да управлява необходимата ви база данни и щракнете върху " Да вляза».

5. На страницата, която се отваря (с успешна авторизация), щракнете 1 път върху секцията " Импортиране» в горното меню. Ако няколко бази данни са достъпни за потребителя, изберете тази, в която ще импортираме (зареждаме) данни от падащия списък. Останалите настройки могат да бъдат оставени непроменени и щракнете върху " Бягай».


искам да отбележаче можете да импортирате не цялата база данни, а само някои от нейните таблици, ако е необходимо.

6. След като процесът на импортиране (зареждане) на базата данни приключи (можете да разберете това по лентата за напредък), задачата може да се счита за изпълнена.


Експортиране (изтегляне) на големи MySQL бази данни чрез SSH терминал

SSH е мрежов протокол, който ви позволява дистанционно (чрез специални команди) да управлявате система или сървър. В Windows има много програми за работа с този протокол, най-популярната от които е PuTTY.

На някои хостинги, като например, има вграден терминал точно в контролния панел. Няма да отидем далеч и ще разгледаме задачата, описана в заглавието, като използваме неговия пример. Не струва нищоче описаните по-долу операции могат да се извършват и в отделен SSH клиент.

1. Стартираме терминала. На него изглежда така:


2. Ако се свързвате със сървъра чрез програма на трета страна, влезте в нея, като въведете съответните данни (можете да ги получите в контролния панел на хостинга или от вашия хостинг доставчик).

второ- Това:

mysqldump -u ПОТРЕБИТЕЛСКО ИМЕ -p БАЗА ДАННИ > backup.sql

директно самия експорт, където:

ПОТРЕБИТЕЛСКО ИМЕ– логин на потребителя, който има достъп до базата данни.

БАЗА ДАННИ– името на базата данни, която искаме да експортираме.

backup.sql– името на файла, в който ще се записва базата данни и пътя спрямо . С този дизайн базата данни ще бъде запазена в корена на хостинга.

4. в третата стъпкаВъведете“ на клавиатурата. Забележка

След като сървърът отново е готов да приема команди чрез SSH, това ще означава, че експортирането на базата данни е завършено и можете да я изтеглите чрез FTP или през файловия мениджър на хостинга.

Процесът на експортиране (и импортиране) към SSH не се излъчва и ако вашата база данни е доста голяма, бъдете търпеливи, тъй като можете да получите отговор от сървъра след повече от 20 минути.

Импортиране (качване) на големи MySQL бази данни чрез SSH терминал

Какво е SSH, вече разбрахме по-горе и сега ще започнем да обмисляме как да импортираме предварително изтеглена база данни в друг проект.

1. в основата на вашияхостинг, изтеглете предварително изтеглената база данни по удобен за вас начин.

2. Свържете се с вашия хостинг/сървър чрез SSH.

така че определено отиваме в root на хостинга и второ- Това:

Така получаваме пълен списък с файлове и директории в текущата директория. Търсим да включим нашата предварително заредена база данни.

4. Ако всичко е наред и основата е на мястото си, въведете последната команда:

mysql -u ПОТРЕБИТЕЛСКО ИМЕ -p БАЗА ДАННИ< backup.sql

ПОТРЕБИТЕЛСКО ИМЕ– логин на потребителя, който има достъп до базата данни.

БАЗА ДАННИ– името на базата данни, в която ще импортираме данните.

backup.sql- името на файла, който ще се зарежда, и пътя спрямо . С този дизайн базата данни ще бъде импортирана от корена на хостинга.

5. След като въведете командата, ще бъдете подканени да въведете паролата от посочения от вас потребител в четвъртата стъпка. Въведете паролата си и щракнете върху " Въведете“ на клавиатурата. Забележкаче въвеждането на парола в SSH терминала не се показва, тоест въвеждате паролата или я поставяте - на нейно място винаги ще има празно място.

След това, когато сървърът отново е готов да приема команди през SSH, това ще означава, че импортирането на базата данни е завършено и можете да продължите да работите по проекта.

Добър ден, колеги 🙂

Днес ще продължа да ви запознавам с работата с MySQL в MySQL конзолата и MySQL командния ред.

Вече съм писал статии за това как да извършвам основни действия с MySQL данни през конзолата и да правя резервно копие на MySQL базата данни, както и да експортирам информацията, съхранявана в нея.

Логичното продължение на тази история ще бъде възстановяването на базата данни и съхраняваната в нея информация с помощта на операции за импортиране на база данни MySQL. И което е важно, ние ще продължим да правим това с инструмента на всички твърди разработчици - чрез конзолата.

Ако имате нужда от инструкции за импортиране на база данни чрез phpMyAdmin, тогава можете да ги намерите в статията за. В настоящата статия нямам желание да го описвам отново, особено след като днешният материал ще бъде посветен изключително на импортирането на базата данни MySQL през конзолата.

Но преди да започнем да разглеждаме начините и инструментите, няколко думи за това какво е MySQL импортиране на база данни, какво представлява и кой е най-добрият начин да го направите?

Импортиране на MySQL база данни: какво и защо?

Импортирането на MySQL база данни е операция, която попълва базата данни с информация. В този случай източникът на данни е дъмп файл - моментна снимка на друга база данни, автоматично създадена по време на операцията за експортиране, или специално подготвен SQL скрипт.

Импортиране, както и експортиране на MySQL база данни, има два вида информация, съхранявана в базата данни:

  1. структурата на базата данни, нейните таблици и данните, съхранявани в тях (наричано разговорно дъмп на база данни);
  2. просто данни, съхранени в таблица или събрани с помощта на ИЗБЕРЕТЕзаявки.

Тази статия ще разгледа и двете опции.

За да възстановите база данни от дъмп на MySQL с нейната структура и цялата съхранена информация, както вече споменахме, имате нужда от файл с дъмп на база данни, който е текстов файл с произволно разширение (първо може да бъде пакетиран в архив, за да се намали размерът), съдържащи SQL команди за създаване на самата база данни и таблици, както и попълването им с информация.

Следователно, за да възстановите MySQL база данни от дъмп, трябва да изпълните командите, съдържащи се във файла.

За нормалното възстановяване на данни такива сложности не са необходими. Достатъчно е да имате наличен тестов файл, информацията в който ще бъде структурирана по същия начин, както в таблицата на базата данни: броят на колоните с информация съответства на броя на атрибутите за запис в таблицата.

За тези цели е подходящ и обикновен txt файл, данните в който ще бъдат разделени, или файлове, създадени в специални редактори на електронни таблици (Microsoft Office Excel, OpenOffice и др.) С различно разширение: xls, csv, odt и др.

Тези формати са дори за предпочитане, т.к. когато се създават, разделителите на данни се добавят автоматично от редакторите и не е необходимо да ги въвеждате отделно, както в случая с обикновен текстов файл.

Добавяне на данни към MySQL: Инструменти

Що се отнася до инструментите за импортиране на бази данни MySQL, мога да кажа, че днес има три от тях.

Ще ги изброя, започвайки от най-ниското ниво, завършвайки с най-високото ниво (по отношение на използването на всички видове черупки и добавки):

  1. Сървърна конзола и MySQL команден ред;
  2. Скриптове, написани на езици за програмиране, които ви позволяват да записвате данни в MySQL с помощта на езикови инструменти;
  3. Готови програми, които предоставят визуален интерфейс за работа с базата данни (същият phpMyAdmin, MySQL WorkBench, MySQL Manager и др.).

Мисля, че редът на инструментите няма да предизвика въпроси, защото. инструментите на езика за програмиране, като правило, работят на базата на конзолни команди на MySQL, а програмите се основават на скриптове или работят директно с командния ред на MySQL.

По един или друг начин конзолата е начело на всичко, а останалите инструменти всъщност са нейните емулатори.

Следователно използването на конзолата при импортиране на данни в MySQL ви позволява да заобиколите различни видове ограничения, определени от настройките на езиците за програмиране на уеб сървъра и самите програми (които, между другото, не винаги могат да бъдат променени).

Благодарение на това попълването на MySQL базата данни през конзолата може не само да бъде по-бързо, но и да направи тази операция принципно възможна, т.к. скриптовете и програмите са склонни да прекъсват импортирането, когато е достигнато максималното време за изпълнение на скрипта, или изобщо да не стартират поради размера на изтегления файл.

Мисля, че всеки, който някога се е опитвал да качи дъмп в голяма MySQL база данни с помощта на phpMyAdmin, разбира за какво говоря.

Често тези ограничения са причина за грешки при импортиране на MySQL база данни, които никога няма да видите, когато използвате конзолата.

Разбира се, те не са постоянни и могат да се променят, но това е допълнително главоболие, което между другото може да се окаже неразрешимо за обикновените потребители.

Надявам се, че съм ви мотивирал да импортирате MySQL базата данни през конзолата (нещо повече, както нейната структура, така и отделни данни).

И на тази положителна бележка, ние преминаваме към дългоочакваната практика и разглеждаме методите и командите за прехвърляне на данни към базата данни на конзолата.

Как да възстановя MySQL база данни от дъмп с помощта на конзолата?

Така че, за да разположите MySQL дъмп от конзолата, има два начина:

  1. използване на команда от командния ред на MySQL;
  2. в самата сървърна конзола.

Да започнем по ред.

И така, за да импортираме дъмп на MySQL база данни в съществуващо хранилище чрез , първо трябва да го стартираме и да изберем желаната база данни, в която ще качим нашия дъмп.

Изпълнението на тези действия е описано подробно в статията на връзката по-горе, така че ако имате нужда от тяхното описание, вземете го от там, т.к. Не искам да ги дублирам във втория кръг.

След като сте направили горното, въведете следната команда в MySQL Shell:

Source path_and_dump_filename;

Всичко, което остава за нас, е да проучим съобщенията в конзолата за напредъка на операциите, съдържащи се в дъмпа.

Без първо превключване към желаната база данни, след свързване към MySQL сървъра в конзолата, дъмпът може да бъде импортиран със следната команда:

Mysql -u потребителско име -p име_база_данни< путь_и_имя_файла_дампа

Това е всичко. Основното нещо е да изчакате импортирането да приключи, ако файлът е много голям. Завършването на дъмпа може да се прецени по това кога сървърната конзола ще бъде достъпна отново.

Строго погледнато, това е недостатъкът на този метод в сравнение с предишния, т.к. в първия е възможно да се наблюдават операциите, извършени върху базата данни по време на импортиране, докато във втория не е така.

Ако дъмп файлът е опакован в архив, тогава при изтегляне ще трябва да го разопаковате по пътя.

В Linux това може да стане по следния начин:

Gunzip > [archive_filename.sql.gz] | mysql -u -p

В Windows няма стандартна помощна програма за разопаковане на архива в конзолата, така че ще трябва да се инсталира допълнително.

Както можете да видите, импортирането на MySQL дъмп чрез конзолата е много проста операция, която може да се извърши с една команда. Така че не е нужно да сте разработчик, за да извършите тази процедура.

Ако изведнъж не знаете как да стартирате сървърната конзола, тогава можете да намерите тази информация в статията за командния ред на MySQL, връзката към която вече имах по-рано.

Между другото, използвайки описаните методи, също е възможно да импортирате MySQL таблица, а не цяла база данни. В този случай дъмпът, който качвате, трябва да съдържа операциите по създаването му и попълването му с данни.

Зареждане на данни в MySQL база данни от файл в конзолата

Говорихме за възстановяване на MySQL база данни от дъмп в конзолата. Сега е моментът да разберете как можете да импортирате данни от файлове по същия начин, включително от xls и csv към MySQL база данни.

За тази задача отново имаме същите два инструмента, както в предишния случай: командния ред на MySQL и конзолата на сървъра.

Нека започнем прегледа отново по ред.

И така, за да импортираме файл в командния ред на MySQL, ние го стартираме отново и отиваме в базата данни, в която ще бъдат заредени данните.

ЗАРЕДЕТЕ ДАННИ ВЪВ ФАЙЛ "path_and_dump_file_name" В ТАБЛИЦА `database_table` КОЛОНИ, ЗАВЪРШВАНИ С "," ОГРАДЕНИ С "\"" РЕДОВЕ, ЗАКРАЙВАНИ С "\n";

Не забравяйте, че ако MySQL сървърът е стартиран с опцията --secure-file-priv(което често се случва при използване на MySQL дистрибуции, включени в WAMP / MAMP компилации), тогава името на файла трябва да бъде посочено, като се вземе предвид системната променлива защитен_файл_priv.

За да импортираме MySQL базата данни в сървърната конзола, без да навлизаме в MySQL Shell, се нуждаем от помощната програма mysqlimport, който е част от разпределението на MySQL, и следното извикване към него:

mysqlimport -u потребителско име -p име_на_база данни име_и_път_към_импортиран_файл

Тази помощна програма е аналог на SQL командата ЗАРЕДЕТЕ ВХОДЯЩ ФАЙЛ С ДАННИ, само команден ред. Но човек се чуди защо тогава сред параметрите на неговото извикване не е посочена таблицата, в която ще бъдат заредени данните от файла?

Факт е, че mysqlimport просто физически няма този параметър. Вместо това името на таблицата, в която ще бъдат заредени данните, трябва да присъства в името на импортирания файл.

Тези. ако искате да импортирате от таблица на excel в таблица mysql потребители, тогава вашият файл трябва да бъде наименуван потребители.xls.

Разширението на импортирания файл, както вече беше споменато, може да бъде всяко.

С mysqlimport също е възможно да качите множество xls или csv файлове в MySQL наведнъж. За да могат данните да стигнат до местоназначението си, имената на файловете и таблиците на базата данни, както в предишния пример, също трябва да съвпадат.

Ако внезапно колоните в импортирания файл не са в същата последователност като колоните на таблицата на базата данни, тогава, за да изясните реда им, трябва да използвате опцията --columns в следната форма:

Mysqlimport -u потребителско име -p име_на_база_данни --колони колона1, колона2, ...импорт_име_на_файл и_път

Естествено, в моите примери не взех предвид пълния списък с параметри на mysqlimport, защото някои от тях са много специфични и рядко използвани в практиката.

Ако искате да се запознаете с тях, тогава пълният им списък е достъпен тук - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

Характеристики на зареждане на данни в MySQL база данни от дъмп

Ако искате процесът на импортиране на голяма MySQL база данни да бъде по-бърз, тогава трябва да създадете дъмп на база данни, като използвате специалните опции на командата mysqldump, за която писах в моята предишна статия за експортиране на MySQL база данни, връзка към която беше поставено в текста по-рано.

За съжаление самите команди за импортиране на бази данни MySQL нямат такива опции.

Единственото нещо е да увеличите скоростта при зареждане на голям дъмп на база данни, можете да използвате следната функция.

1. Отворете дъмп файла (за предпочитане във файлови мениджъри, защото обикновените редактори могат просто да умрат от големи файлове).

2. Пишем следните редове в началото на файла:

SET Foreign_key_checks = 0; SET UNIQUE_CHECKS = 0; SET AUTOCOMMIT = 0;

Забележка! Може би вече са там или са коментирани (много програми, които правят дъмпове, могат да ги добавят автоматично)

3. В края на файла напишете обратните действия:

SET Foreign_key_checks = 1; SET UNIQUE_CHECKS = 1; SET AUTOCOMMIT = 1;

Между другото, тези команди ще помогнат не само за ускоряване на процеса на импортиране, но и ще го направят възможно.

Факт е, че ако някога сте разглеждали дъмп файла за импортиране на MySQL база данни, може би сте забелязали, че операцията по настройка на структурата на заредените таблици изглежда така:

ПУСКАНЕ НА ТАБЛИЦА, АКО СЪЩЕСТВУВА `клиенти`; CREATE TABLE `клиенти` (...);

Тези. извършва се търсене в базата данни за таблица със същото име като импортираната и ако се намери такава, се изтрива и създава отново.

И ако внезапно съществуваща таблица е свързана чрез външни ключове с други, тогава цялото натоварване ще се провали.

Следователно деактивирането на проверката за наличие на външни ключове и други също е отлична гаранция за успешното завършване на процеса на импортиране на MySQL база данни.

Характеристики на импортиране на csv в MySQL база данни и други файлове

Когато зареждате данни в MySQL база данни от текстови файлове, може също да е необходимо да деактивирате чужди ключове.

Освен това, за разлика от предишната ситуация, в този случай няма да работи да пишете директиви във файла, защото SQL командите в него няма да се приемат и изпълняват.

В предишна статия за експортиране на MySQL база данни вече споменах как да направите това, като използвате следната операция в командния ред на MySQL:

SET FOREIGN_KEY_CHECKS=0;

Въпреки това не споменах там системната променлива на MySQL FOREIGN_KEY_CHECKSима две значения: глобално и сесия (за текущата сесия).

Глобалната стойност на MySQL променливите е в сила за всяко действие, предприето на MySQL сървъра, до и включително рестартиране на сървъра. След това стойностите на променливите ще бъдат нулирани и ще им бъдат присвоени стойностите по подразбиране.

Стойността на сесията на системната променлива MySQL се задава само за продължителността на сесията на потребителя с MySQL сървъра. Сесия или сесия започва, когато клиентът се свърже със сървъра, при което му се присвоява уникален ID на връзката, и завършва при прекъсване на връзката със сървъра, което може да се случи по всяко време (например при изчакване).

Защо реших да запомня това?

Тъй като при изпълнение на команди за зареждане на файл в MySQL база данни през сървърната конзола, без да влизам в MySQL Shell, открих, че деактивирането на проверката на външния ключ по описания по-горе начин не работи.

Конзолата все още показваше съобщение за грешка, причинено от наличието на външни ключове в таблицата.

И възникна поради причината, че горната команда изключи проверката за наличие на външни ключове в сесията, а не глобално, което в допълнение към посочения метод може да се извърши и по следния начин:

SET SESSION име_на_променлива = стойност_на_променлива; SET @@session.variable_name = променлива_стойност; SET @@име_на_променлива = стойност_на_променлива;

В горните команди променливата е изрично маркирана като променлива на сесията.

И тъй като заредих csv файла в MySQL таблицата през сървърната конзола, без директна връзка към MySQL сървъра, сесията не беше създадена, в рамките на която стойността на моята сесия на променливата щеше да работи.

В крайна сметка зададох глобалната стойност FOREIGN_KEY_CHECKS и импортирането беше успешно.

Можете да направите това по един от следните начини:

SET GLOBAL име_на_променлива = стойност_на_променлива; SET @@global.variable_name = променлива_стойност;

След промяна на стойностите, за да проверите дали промените са влезли в сила, не е излишно да прегледате стойностите на променливата. За да покажете сесията и глобалните стойности едновременно, използвайте следната команда:

ИЗБЕРЕТЕ @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

Това завършва днешната статия за импортиране на MySQL база данни. Споделете вашите впечатления и собствен опит в коментарите. Мисля, че мнозина ще се заинтересуват от вашия опит.

Ще се видим скоро! 🙂

P.S.: ако имате нужда от уеб сайт или трябва да направите промени във вече съществуващ, но нямате време и желание за това, мога да предложа услугите си.

Над 5 години опитпрофесионална изработка на уебсайтове. Работи с PHP, opencart,