Експорт само на схемата (структурата) от SQL дъмп

Имате пълен дъмп на диска, но искате само структурата — CREATE TABLE, индекси, външни ключове — без таблиците с логове от 89 милиона реда. Или обратното: само данните, без CREATE заявки. Ето защо обичайните флагове за дъмп не помагат на съществуващ файл и как да разделите структурата от данните с едно кликване.

Три ситуации възникват постоянно:

Защо mysqldump --no-data не е достатъчно

Класическият съвет е mysqldump --no-data (само структура) или mysqldump --no-create-info (само данни). И двете са флагове за експорт: те променят какво съдържа нов дъмп от работеща база данни. Те не правят нищо за дъмп, който вече имате на диска като .sql файл.

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

Ръчният начин

Очевидният ход е да премахнете редове с grep или sed. За да запазите структурата и да махнете данните:

# запази всичко освен INSERT редовете
grep -v '^INSERT INTO' dump.sql > schema.sql

# или запази само INSERT редовете за файл само с данни
grep '^INSERT INTO' dump.sql > data.sql

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

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

Само структура или само данни с DumpCleaner

DumpCleaner разбира SQL заявките, вместо да съвпада с редове, така че разделя структурата от данните надеждно — на файлове с всякакъв размер:

  1. Плъзнете вашия .sql дъмп в DumpCleaner (MySQL, MariaDB или PostgreSQL). Той парсва файла поточно, така че многогигабайтов дъмп се зарежда с постоянна памет.
  2. Превключете типовете заявки, които искате: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Махнете отметката от INSERT INTO и получавате само структура; махнете отметката от CREATE TABLE / CREATE INDEX и получавате само данни.
  3. Или изберете предварителна настройка — Само структура или Само данни — за да зададете всеки превключвател на една стъпка, след което прецизирайте по таблица, ако желаете.
  4. Експортирайте. Получавате лек файл със схема за staging или CI, или чист дъмп само с данни за начално попълване.

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

Истинската сила е, че филтрирането работи по тип заявка и по таблица, и двете се комбинират. Можете да запазите структурата на всяка таблица, но да включите INSERT данни само за трите таблици, които действително ви трябват — оставяйки таблицата logs от 89 милиона реда като празна обвивка. Това е нещо, което никой флаг --no-data не може да изрази.

Разделете структурата от данните за секунди

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

Изтегляне от App Store

Често задавани въпроси

Мога ли да експортирам данните без схемата?

Да. Изключете CREATE TABLE и CREATE INDEX (или изберете предварителната настройка Само данни) и запазете INSERT INTO. DumpCleaner експортира само редовете, готови за зареждане в схема, която вече съществува.

Запазва ли експортът само на структура индексите и външните ключове?

Да. Само структурата запазва CREATE TABLE, CREATE INDEX, ALTER TABLE и дефинициите на външните ключове — всичко, което дефинира базата данни. Премахнати са само INSERT редовете с данни.

Мога ли да смесвам — структура за всички таблици, данни за някои?

Да. Филтрирането е по тип заявка и по таблица, и двете се комбинират. Запазете структурата на всяка таблица, но включете INSERT данни само за няколкото таблици, които действително ви трябват.

Работи ли това с PostgreSQL?

Да. DumpCleaner чете MySQL, MariaDB и PostgreSQL дъмпове и засича формата автоматично, така че експортите само на структура и само на данни работят по същия начин за pg_dump файлове.

Схема без данните — или данни без схемата

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

Изтегляне от App Store