Mysql корекція таблиць, дамп бази завантаження даних


MySQL: корекція таблиць, дамп бази завантаження даних


Що допомагає працювати з MySQL.

На прохання web-глядачів, хочу звернути свою увагу в кілька абзаців тексту, присвяченого роботі з MySQL.

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

Отже. Чого корисного вміє MySQL.

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

Іншими словами, не треба думати, що для кожного сайту треба "піднімати" і налаштовувати окрему копію MySQL.

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

Далі. Звертатися із запитами до MySQL можна як для роботи з даними, так і для настройки самого MySQL або для настройки бази.

Для роботи з MySQL можна використовувати будь-який SQL-клієнт, який вам найбільш звичний і зручний. Особисто я використовую стандартного клієнта MySQL, що працює в UNIX-shell.

Звичайне спілкування з MySQL сильно нагадує роботу в shell або в DOS (для тих, хто ніколи не бачив в очі UNIX).

Для початку, ви підключаєтеся до MySQL, що у мене на моєму хостингу в masterhost.ru виглядає як:

[Atos] $ / usr / local / bin / MySQL -h MySQL.int -u 21ru -p 21ru

Після натискань enter-а, MySQL запросить у мене пароль, перевірить його і пустить в свій shell:


Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. CoMySQLands end with; or \ g.
Your MySQL connection id is 3060933 to server version: 3.23.49

Type 'help;' or '\ h' for help. Type '\ c' to clear the buffer

Ось так. І далі я починаю спілкуватися з MySQL.

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

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

Отже. Що ж можна зробити з MySQL, крім звичайних запитів до таблиць бази даних.

Можна модифікувати самі ці таблиці. Для цього використовується запит з ключовим словом alter table.

Наприклад, нам треба додати в існуючу таблицю tbl_text поле text_length в форматі int з початковим значенням 100. Пишемо:

alter table tbl_text add column text_length int not null default 100; [Enter]

і всі записи в таблиці tbl_text отримають нове поле text_length зі значенням 100.

До речі, в shell MySQL можна писати запити в кілька рядків. MySQL не почне інтерпретувати ваш запит, поки ви не закінчите його крапкою з комою ";" і enter-му, наступним за цим знаком.

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

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

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

У подібних випадках користувач починає писати скрипт, який "смокче" дані з файлу, парсит їх і за допомогою банального insert-а укладає в таблиці.

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

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

І, що особливо важливо, швидкість заливки даних за допомогою LOAD DATA набагато перевищує порядкову швидкість заливки insert-ом.

Сподіваюся, функція LOAD DATA виявиться вам корисною.

Ну а що робити, якщо у вас є необхідність перенести не тільки ваші дані, але і всю конфігурацію бази: таблиці, правила, індекси і так далі?

У подібному випадку нам дуже корисно буде дампіроованіе бази.

Що таке дамп бази. Це висновок структури і даних з бази в форматі SQL-запитів.

Поясню. Якщо у нас в базі є таблиці, а в таблицях дані, то в дамп ми отримаємо SQL-запити на побудову таблиць і insert-и для заповнення цих таблиць даними.

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

У пакеті MySQL є mysqldump який цим і займається. Запуск mysqldump дуже схожий на запуск стандартного клієнта MySQL, про який я писав на початку цього випуску. Тобто, вказується база, вказується користувач і назва database, дампіровать яку ми зібралися.

[Atos] $ / usr / local / bin / mysqldump -h MySQL.int -u 21ru -p 21ru

Зрозуміло, mysqldump має масу всіляких параметрів. Наприклад, вказавши в рядку виклику -d можна вивести в дамп тільки структуру таблиць, без даних. Це особливо зручно, коли вам треба створити копію структури бази на іншому сервері, і не переносити при цьому даних. Так само можна вказати конкретні таблиці, дамп яких вам необхідний і так далі.

Повний список ключів mysqldump можна отримати:

[Atos] $ mysqldump -help

Отримавши на руки дамп бази, ви можете залити його практично в будь-яку іншу БД SQL, а вже на будь-який інший MySQL-північ - це точно.

Залити дані з дампа просто:

Схожі статті