Як експортувати (завантажувати) та імпортувати (завантажувати) бази даних MySQL великих розмірів? Експорт бази даних, імпорт бази даних MySQL Експорт та імпорт даних mysql

Ця процедурапередбачає перенесення даних з однієї бази даних (А) до іншої (Б). Як правило, база даних Б знаходиться на хостингу (або на Денвері), а база даних А, знаходиться на комп'ютері користувача і являє собою файл з розширенням sql. У бази даних А є ще одна назва – Dump.

Як імпортувати базу даних?

Імпорт бази даних MySQL за допомогою SSH

Цей спосіб використовується досить рідко, але його опишемо. Для початку залийте БД, з якої буде вироблено імпорт на сервер хостинг-провайдера, де зберігаються файли вашого сайту. Далі для імпорту бази даних використовується команда:

mysql -uUSERNAME -pUSERPASSWORD DBNAME< DUMPFILENAME.sql

mysql --user=USERNAME --password=USERPASSWORD DBNAME< DUMPFILENAME.sql

Замість слів написаних великими літерами підставляємо:
USERNAME - ім'я користувача бази даних, наприклад uhosting_databaseuser;

USERPASSWORD – пароль користувача БД, наприклад Rjkweuik12;

DBNAME - ім'я бази даних, в яку буде імпорт, наприклад uhosting_databasename

DUMPFILENAME - ім'я dump-файлу, з якого буде виконано імпорт даних. Тут ще потрібно вказати шлях до бази даних, яку ми заливали на сервер хостинг-провайдера.

Бази даних (або скорочено бд) на більшості сайтів мають розмір (вага), що дорівнює декільком десяткам Мб (мегабайт). Початковий розмір бази даних на старті різних проектів залежить від структури самого сайту (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. На сторінці, що відкрилася (при успішній авторизації), тиснете 1 раз на розділ « Експорт» в верхньому меню . Якщо користувачеві доступні кілька баз даних – вибираєте ту, яку експортуватимемо (завантажуватимемо) зі списку. Інші налаштування можна залишити без змін і натискаєте на кнопку « Виконати».


Хочу відмітити, Що можна експортувати не всю базу, а лише деякі її таблиці по необхідності.

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


Крім цього, всі експортовані бази зберігатимуться на вашому сайті по дорозі /sxd/backup/. Якщо збереження бази завершується помилкою, перевірте, що для папки backupстоять права на запис 777.

На цьому експорт (завантаження) бази даних закінчено.

Імпорт (завантаження) баз даних MySQL великого розміру через Sypex Dumper

Вище ми розібрали з вами спосіб отримання необхідної базиТепер потрібно перекинути (імпортувати) її на інший проект, і для цього робимо таке.

1. безкоштовно із нашого сайту.

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

3. У папку /sxd/backup/завантажуєте раніше отриману (завантажену) базу даних.

4. Далі перейдіть за адресою http://your_site.ru/sxd/index.php(де your_site.ru– домен вашого сайту), після чого перед вами відкриється форма для введення даних. У ній ви вказуєте дані того користувача, який має права на керування необхідною вам базою даних і тисне « Увійти».

5. На сторінці, що відкрилася (при успішній авторизації) тисне 1 раз на розділ « Імпорт» у верхньому меню. Якщо користувачеві доступні кілька баз даних - вибираєте ту, в яку будемо імпортувати (завантажувати) дані зі списку. Інші настойки можна залишити без змін і тиснете на кнопку « Виконати».


Хочу відмітити, Що імпортувати можна не всю базу, а лише деякі її таблиці за потребою.

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


Експорт (завантаження) баз даних MySQL великого розміру через SSH-термінал

SSH – мережевий протокол, який дозволяє віддалено (через спеціальні команди) керувати системою чи сервером. У Windows для роботи з цим протоколом існує безліч програм, популярною з яких вважається PuTTY.

На деяких хостингах, як, наприклад, в , існує вбудований термінал прямо в панелі управління. Не далеко ходити і розглянемо описану в заголовку завдання на його прикладі. Варто відзначити, що описані нижче операції можна зробити і в окремому SSH-клієнті.

1. Запускаємо Термінал. Він виглядає так:


2. Якщо ви підключаєтеся до сервера через сторонню програму- авторизуйтесь на ньому, ввівши відповідні дані (отримати їх можете в панелі керування хостингом або у вашого хостинг-провайдера).

друга- Це:

Mysqldump -u USERNAME -p DATABASE > backup.sql

безпосередньо сам експорт, де:

USERNAME– логін користувача, який має доступ до бази даних.

DATABASE- Назва бази даних, яку хочемо експортувати.

backup.sql– назва файлу, в якому буде збережена база даних та шлях щодо . За такої конструкції база буде збережена в корінь хостингу.

4. у третьому кроціEnter" на клавіатурі. Зверніть увагу

Після того, як сервер буде знову готовий приймати команди SSH, це буде означати, що експорт бази закінчено і ви можете завантажити її по FTP або через файловий менеджер хостингу.

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

Імпорт (завантаження) баз даних MySQL великого розміру через SSH-термінал

Що являє собою SSH, ми вже з'ясували вище, а тепер приступимо до розгляду того, як раніше завантажену базу даних імпортувати на інший проект.

1. У корінь вашогохостингу завантажте раніше завантажену базу даних зручним для вас способом.

2. Підключіться до вашого хостингу/серверу SSH.

так ми точно переходимо в корінь хостингу, і друга- Це:

Таким чином, ми отримуємо повний списокфайлів та каталогів поточної директорії. Дивимося, щоб серед них була наша раніше завантажена база даних.

4. Якщо все добре і база на місці, введіть останню команду:

Mysql -u USERNAME -p DATABASE< backup.sql

USERNAME– логін користувача, який має доступ до бази даних.

DATABASE– назва бази даних, до якої імпортуватимемо дані.

backup.sql– назва файлу, який завантажуватиметься, та шлях щодо . За такої конструкції база імпортуватиметься з кореня хостингу.

5. Після введення команди вам буде запропоновано ввести пароль користувача, якого ви вказали у четвертому кроці. Введіть пароль та натискаєте « Enter" на клавіатурі. Зверніть увагу, що введення пароля в SSH-терміналі не показується, тобто вводите пароль або вставляєте - на його місці завжди буде порожнє місце.

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

Мене часто запитують, як можна імпортувати на сервер велику базу даних MySQL. Відомо, що phpMyAdmin по дефолту має обмеження на розмір імпортованої БД.

Якщо ваш дамп не набагато перевищує допустимий ліміт, його можна розбити на кілька частин і імпортувати в кілька заходів. Це виправдано, якщо, наприклад, ліміт становить 2Мб, а ваша база має розмір 5-10 Мб. Зрозуміло, що «різати» базу вагою 100Мб на 50 частин - процес досить трудомісткий і витратний у плані тимчасових ресурсів.

Існує кілька варіантів вирішення цього завдання.

Редагуємо конфіг веб-сервера

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

Post_max_size=2000M upload_max_filesize=2000M

Крім того, якщо ваша БД дуже велика, слід збільшити максимально допустимий час виконання скрипту.

Max_execution_time = 32000 max_input_time = 32000

І про всяк випадок можна збільшити розмір допустимого обсягу оперативної пам'яті:

Memory_limit = 512M

Після внесення змін, обов'язково перезавантажте веб-сервер.

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

Sypex Dumper

Можна користуватися стороннім софтом. І перший додаток на який варто звернути увагу – це Sypex Dumper.

Вперше скориставшись ним багато років тому і оцінивши всі його можливості та переваги, я можу сміливо повісити йому ярлик "Must Have". Sypex Dumper - серверний додаток на PHP, що не вимагає установки. Його досить скопіювати, наприклад, у корінь вашого сайту в директорію sxd і викликати його в браузері: http://Ваш_Сайт/sxd/. Варто зауважити, що попередньо в директорію backup слід помістити дамп вашої бази даних. Після ініціалізації скрипта ви побачите панель авторизації для підключення до бази. Вводимо свій логін та пароль. Хост та порт - опціонально, тільки якщо вони специфічні.

Після авторизації можна перейти безпосередньо до іморту БД. У полі "База даних"буде обрана БД, до якої ви підключені, а в полі "Файл"ви побачите раніше завантажений вами дамп у директорію Backup.

Для більшості випадків жодні додаткові налаштуваннябільше не потрібні і можна сміливо запускати імпорт, натиснувши кнопку «Виконати». Імпорт, залежно від розміру БД і вашої швидкості підключення до Інтернету може зайняти деякий час. Під час імпорту ви можете бачити, які саме таблиці імпортуються в Наразіу основу. Після завершення роботи скрипта ви побачите лог виконання. Він виглядає приблизно так:

Ось, власне, і все – база імпортована!

Консоль

Імпорт через консоль розглядати не будемо. Я думаю, люди, які користуються консоллю, без мене знають як імпортувати будь-яку БД. А простим користувачам без спеціальної підготовки краще туди не потикатися. Оскільки виконання деяких команд може призвести до серйозних наслідків, до повного падіння сервера.

На закінчення

Я не беруся стверджувати, що Sydex Dumper – це єдине і правильне рішення. Існують інші елегантніші способи, які вимагають від користувача певних знань і відповідні доступи до налаштувань сервера.

Але в умовах віртуального хостингу Sydex Dumper, безумовно, буде вашим незамінним помічником.

Підпишіться на мій телеграм і першими отримуйте нові матеріали, серед яких немає на сайті.

Доброго часу доби, колеги 🙂

Сьогодні я продовжу знайомити вас з роботою з MySQL у консолі та командним рядком MySQL.

Я вже написав статті про те, як робити основні дії з даними MySQL через консоль іm робити бекап бази MySQL, а також експорт інформації, що зберігається в ній.

Логічним продовженням цієї розповіді буде відновлення БД та інформації, що зберігається в ній, за допомогою операцій імпорту бази даних MySQL. І, що немаловажно, ми продовжимо робити це за допомогою інструменту всіх знівечених розробників через консоль.

Якщо вам потрібна інструкція з імпорту бази через phpMyAdmin, то ви можете знайти її в статті про . У цій статті я не маю бажанням описувати її ще раз, тим більше, що сьогоднішній матеріал буде присвячений виключно імпорту бази MySQL через консоль.

Але, перед тим, як ми приступимо до огляду методів і інструментів, кілька слів про те, що таке імпорт бази даних MySQL, яким він буває і як його краще робити?

Імпорт бази даних MySQL: що й навіщо?

Імпорт бази даних MySQL - це операція, коли відбувається наповнення бази інформацією. При цьому джерелом даних є файл дампа - зліпок іншої бази, що автоматично створений при операції експорту, або спеціально підготовлений SQL скрипт.

Імпорт, як і експорт БД MySQL, буває двох видів інформації, що зберігається на базі:

  1. структури основи, її таблиць і які у них даних (у народі іменованих дампом БД);
  2. просто даних, які у таблиці чи зібраних з допомогою SELECTзапитів.

У цій статті будуть розглянуті обидва варіанти.

Для відновлення з дампа 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 дозволяє обійти різноманітні обмеження, що встановлюються налаштуваннями мов програмування на Web сервері та самих програм (які, до речі, не завжди можливо змінити).

За рахунок цього залити базу даних MySQL через консоль можна як швидше, а й зробити цю операцію можливою у принципі, т.к. скрипти та програми схильні переривати імпорт при досягненні максимального часу виконання скрипта або взагалі не стартувати його через розмір файлу, що завантажується.

Думаю, всі, хто хоч раз намагався завантажити дамп у MySQL БД великого розміручерез phpMyAdmin, розуміють, про що я говорю.

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

Вони, звичайно, не константні, і їх можна змінити, але це додатковий біль голови, який для рядових користувачів, до речі, може виявитися нерозв'язним.

Сподіваюся, що я мотивував вас робити імпорт бази даних MySQL через консоль (причому як її структури, так і окремо даних).

І на цій позитивній ноті ми переходимо до довгоочікуваної практики та розглянемо способи та команди для консольного перенесення даних у базу.

Як відновити MySQL базу з дампи через консоль?

Отже, для того, щоб розгорнути дамп MySQL з консолі є два шляхи:

  1. за допомогою команди в командному рядку MySQL;
  2. у самій консолі сервера.

Почнемо по порядку.

Отже, щоб імпортувати дамп бази даних MySQL в існуюче сховище через , нам спочатку потрібно запустити її і вибрати потрібну базу даних, в яку ми будемо заливати наш дамп.

Виконання даних дій докладно описано у статті за посиланням вище, тому якщо вам потрібний їхній опис – візьміть звідти, т.к. дублювати їх по другому колу не хочу.

Після того, як ви зробите вказане, вводимо до MySQL Shell наступну команду:

Source шлях_і_ім'я_файлу_дампа;

Все, що нам залишиться, - це вивчати повідомлення в консолі про хід виконання операцій, що містяться в дампі.

Без попереднього перемикання на потрібну базу даних після з'єднання з сервером MySQL у консолі дамп можна імпортувати такою командою:

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

От і все. Головне – дочекатися закінчення імпорту, якщо файл дуже великий. Про закінчення заливки дампа можна судити з того, коли консоль сервера знову буде доступна.

Власне кажучи, в цьому і є недолік даного способупроти попереднім, т.к. у першому є можливість спостерігати за операціями, що виробляються з БД під час імпорту, а у другому — ні.

Якщо файл дампа буде запакований в архів, то при завантаженні потрібно буде попутно розпаковувати.

У Linux це можна зробити так:

Gunzip > [ім'я_файлу_архіву.sql.gz] | mysql -u -p

У Windows стандартної утилітидля розпакування архіву в консолі немає, тому її потрібно встановити додатково.

Як бачите, імпорт дампа MySQL через консоль - операція дуже проста, яка виконується однією командою. Так що для виконання цієї процедури не обов'язково бути розробником.

Якщо раптом ви не знаєте, як запустити консоль сервера, то можете знайти цю інформацію в статті про командний рядок MySQL, посилання на яку я вже мав раніше.

До речі, описаними методами можливий також і імпорт таблиці MySQL, а не цілої бази. В цьому випадку в дампі, що заливається вами, повинні бути операції її створення і наповнення даними.

Завантаження даних у MySQL базу з файлу в консолі

Про відновлення БД MySQL із дампи в консолі ми поговорили. Тепер саме час розібратися з тим, як аналогічно можна імпортувати дані з файлів, у тому числі з xls і csv в базу MySQL.

Для цього ми знову маємо ті самі два інструменти, що й у попередньому випадку: командний рядок MySQL і консоль сервера.

Знову почнемо огляд по порядку.

Отже, для імпорту файлу в MySQL командному рядку ми знову запускаємо її і переходимо на БД, в яку завантажуватимуться дані.

LOAD DATA INFILE "шлях_і_ім'я_файла_дампа" INTO TABLE `таблиця_бази_даних` COLUMNS TERMINATED BY "," ENCLOSED BY "\"" LINES TERMINATED BY "\n";

Не забудьте, що якщо сервер MySQL був запущений з опцією -secure-file-priv(що часто буває при використанні MySQLдистрибутивів, що входять до WAMP/MAMP складання), то ім'я файлу потрібно вказувати з урахуванням системної змінної secure_file_priv.

Для того, щоб зробити імпорт бази даних MySQL в консолі сервера, не заходячи в MySQL Shell, нам знадобиться утиліта mysqlimport, що входить до складу дистрибутива MySQL, та наступний її виклик:

mysqlimport –u ім'я_користувача –p ім'я_бази_даних ім'я_і_шлях_до_файлу_імпорту

Ця утиліта є аналогом SQL команди LOAD DATA INFILE, тільки командного рядка. Але, питається, чому тоді серед параметрів її виклику не вказано таблицю, в яку завантажуватимуться дані з файлу?

Справа в тому, що mysqlimport просто фізично немає даного параметра. Натомість ім'я таблиці, в яку будуть завантажуватися дані, має бути присутнє в імені імпортованого файлу.

Тобто. якщо ви захочете зробити імпорт з Excel таблиці до MySQL таблиці users, то ваш файл має називатися users.xls.

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

За допомогою mysqlimport також можна завантажувати відразу кілька файлів xls або CSV в MySQL. Щоб дані потрапили за призначенням, назви файлів та таблиць БД, як і попередньому прикладі, також мають збігатися.

Якщо раптом в файлі, що імпортується, стовпці йдуть не в тій же послідовності, що і колонки таблиці БД, то для уточнення їх порядку потрібно використовувати опцію -columns в наступному вигляді:

Mysqlimport –u ім'я_користувача –p ім'я_бази_даних --columns стовпець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, то могли помітити, що операція завдання структури таблиць, що завантажуються, виглядає так:

DROP TABLE IF EXISTS `clients`; CREATE TABLE `clients` (…);

Тобто. виконується пошук у БД таблиці з таким самим ім'ям, як і в імпортованої, і якщо така знайдена, вона видаляється і створюється наново.

І якщо раптом існуюча таблиця буде пов'язана з зовнішніми ключами з іншими, то все завантаження провалиться.

Тому відключення перевірки існування зовнішніх ключівта інших – це ще й чудова гарантія успішного виконання процесу імпорту бази даних MySQL.

Особливості імпорту CSV в MySQL БД та інших файлів

При завантаженні даних у MySQL БД з текстових файлівможе також знадобитися вимкнення зовнішніх ключів.

Причому, на відміну попередньої ситуації, у разі прописати директиви у файл вдасться, т.к. SQL команди в ньому не сприйматимуться і виконуватимуться.

У попередній статті про експорт бази MySQL я вже згадував про те, як це зробити за допомогою наступної операції в командному рядку MySQL:

SET FOREIGN_KEY_CHECKS=0;

Однак там я не згадав, що системна змінна MySQL FOREIGN_KEY_CHECKSмає два значення: глобальне та сесійне (для поточної сесії).

Глобальне значення змінних MySQL діє під час виконання будь-яких дій на сервері MySQL до його перезапуску. Тоді значення змінних буде скинуто і їм присвоєно значення за промовчанням.

Сесійне значення системної змінної MySQL встановлюється лише під час сеансу роботи користувача з сервером MySQL. Сеанс або сесія починається при підключенні клієнта до сервера, при якому йому надається унікальний connection id, і закінчується при відключенні від сервера, яке може статися будь-якої миті (наприклад, по таймууту).

Чому я про це вирішив згадати?

Тому що при виконанні команд завантаження файлу MySQL БД через консоль сервера, без заходу в MySQL Shell, я виявив, що відключення перевірки зовнішніх ключів наведеним раніше способом не працює.

У консолі так само видавалося повідомлення про помилку, що викликається наявністю в таблиці зовнішніх ключів.

А виникало воно з тієї причини, що наведеною командою відключалася перевірка існування зовнішніх ключів у рамках сесії, а не глобально, яка, крім зазначеного способу, може бути виконана ще й таким чином:

SET SESSION ім'я_змінної = значення_змінної; SET @@session.ім'я_змінної = значення_змінної; SET @@ім'я_змінної = значення_змінної;

У наведених командах змінна явно позначається як сесійна.

А оскільки я виконував завантаження csv файлу в MySQL таблицю через консоль сервера, без прямого підключення до сервера MySQL, то сеанс і не був створений, в рамках якого працювало б моє сесійне значення змінної.

В результаті я встановив глобальне значення FOREIGN_KEY_CHECKS і імпорт успішно виконався.

Зробити це можна одним із перерахованих способів:

SET GLOBAL ім'я_змінної = значення_змінної; SET @@global.ім'я_змінної = значення_змінної;

Після зміни значень для перевірки того, що зміни набули чинності, не зайвим буде переглянути значення змінної. Для виведення сесійного та глобального значень одночасно користуйтеся наступною командою:

SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

На цьому сьогоднішня стаття, присвячена імпорту бази даних MySQL, добігла кінця. Діліться своїми враженнями та власними напрацюваннями у коментарях. Думаю, що багатьом буде цікавим ваш досвід.

До нових зустрічей! 🙂

P.S.: якщо вам потрібен сайт або необхідно внести редагування на існуючий, але для цього немає часу та бажання, можу запропонувати свої послуги.

Понад 5 років досвіду професійної розробкисайтів. Робота з PHP, OpenCart,

При перенесенні сайту з локального сервера на хостинг однією з обов'язкових процедур є експорт/імпорт БД (бази даних). Тому в цій статті я спробую якомога детальніше описати процес експорту та імпорту бази даних з локального сервера, тобто з веб-інтерфейсу. PHPMyAdminверсії 3.2.3 на хостинг.

Перше, що потрібно зробити, це запустити локальний сервер, У цьому випадку це Denwer. Після запуску Denwer потрібно відкрити браузер і в браузерному рядку прописати: http://localhost/tools/phpmyadmin, після чого перед Вами відкриється вікно(Мал.1)із створеними раніше базами даних.

Рис.1

Далі потрібно вибрати базу даних, яку ми експортуватимемо, у моєму випадку це БД з назвою Mybd. Базу даних можна вибрати, клацнувши по ній у лівій частині вікна браузера, де написано "Please select a database" (Рис.2).


Рис.2

Після вибору потрібної бази даних відкриється вікно зі структурою БД. У верхньому меню є пункт "Export"за допомогою якого ми експортуватимемо БД на комп'ютер, щоб потім імпортувати її на хостинг. Отже, переходимо по пункту «Export» (Мал.3).


Рис.3

У вікні потрібно зробити деякі вимірювання (Мал.4), а саме: у блоці «Export» потрібно вибрати всі таблиці бази даних, натиснувши на пункт "Select All"і поставити галочку навпроти пункту SQLЦей пункт відповідає за тип файлу, який буде експортований. Також, необхідно поставити галочку напроти пункту "Save as file", який забезпечить збереження бази даних у файлі. Інші налаштування міняти не потрібно, просто натискаємо кнопку «Go».

Рис.4

Тепер, якщо ви зробили все правильно, файл із базою даних повинен завантажитися на ваш комп'ютер. За допомогою цього файлу ми імпортуватимемо базу даних на хостинг.

Також потрібно змінити кодування файлу на UTF-8 без BOM, для зміни кодування я використовую текстовий редактор Notepad++(Завантажити ) . За допомогою цієї програми відкриваєте файл бази даних та в меню «Кодування»вибираєте «Перетворити на UTF-8 без BOM» (Мал.5), після чого зберігаємо та закриваємо.


Рис.5

Поломки