Eksportuj tylko schemat (strukturę) ze zrzutu SQL

Masz pełny zrzut na dysku, ale chcesz tylko strukturę — CREATE TABLE, indeksy, klucze obce — bez tabel logów z 89 milionami wierszy. Albo odwrotnie: tylko dane, bez instrukcji CREATE. Wyjaśniamy, dlaczego zwykłe flagi zrzutu nie pomogą z istniejącym plikiem i jak jednym kliknięciem oddzielić strukturę od danych.

Trzy sytuacje wciąż się powtarzają:

Dlaczego mysqldump --no-data nie wystarczy

Klasyczna porada to mysqldump --no-data (tylko struktura) lub mysqldump --no-create-info (tylko dane). Oba to flagi eksportu: zmieniają to, co zawiera świeży zrzut z działającej bazy danych. Nie robią nic dla zrzutu, który masz już na dysku jako plik .sql.

W praktyce plik często trafia do Ciebie od kogoś innego, z zadania kopii zapasowej lub z serwera, do którego nie masz już dostępu na żywo. Nie możesz ponownie uruchomić mysqldump na bazie danych, która jest nieosiągalna — dane logowania przepadły, serwer został wycofany, albo plik to po prostu wszystko, co dostałeś. W tym momencie flagi są bezużyteczne, a Tobie zostaje edycja samego pliku.

Sposób ręczny

Oczywistym ruchem jest usunięcie wierszy za pomocą grep lub sed. Aby zachować strukturę i usunąć dane:

# zachowaj wszystko oprócz wierszy INSERT
grep -v '^INSERT INTO' dump.sql > schema.sql

# lub zachowaj tylko wiersze INSERT, aby uzyskać plik z samymi danymi
grep '^INSERT INTO' dump.sql > data.sql

Wygląda dobrze na małym, uporządkowanym zrzucie — a potem psuje się na prawdziwym:

Kończysz, debugując własny filtr, zamiast otrzymać swój schemat.

Tylko struktura lub tylko dane za pomocą DumpCleaner

DumpCleaner rozumie instrukcje SQL, zamiast dopasowywać wiersze, więc niezawodnie oddziela strukturę od danych — na plikach dowolnego rozmiaru:

  1. Przeciągnij swój zrzut .sql do DumpCleaner (MySQL, MariaDB lub PostgreSQL). Parsuje plik strumieniowo, więc wielogigabajtowy zrzut wczytuje się ze stałym zużyciem pamięci.
  2. Przełącz typy instrukcji, które chcesz: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Odznacz INSERT INTO, a otrzymasz samą strukturę; odznacz CREATE TABLE / CREATE INDEX, a otrzymasz same dane.
  3. Albo wybierz gotowy zestaw — Tylko struktura lub Tylko dane — aby ustawić wszystkie przełączniki w jednym kroku, a potem dostroić je per tabela, jeśli chcesz.
  4. Eksportuj. Otrzymujesz szczupły plik schematu dla stagingu lub CI albo czysty zrzut z samymi danymi do inicjalizacji.

Ponieważ filtr jest świadomy instrukcji, wielowierszowy rozszerzony INSERT jest zachowywany lub usuwany w całości — nigdy nie przecinany w połowie.

Prawdziwa siła polega na tym, że filtrowanie działa per typ instrukcji i per tabela, a te dwa się łączą. Możesz zachować strukturę każdej tabeli, ale dołączyć dane INSERT tylko dla trzech tabel, których naprawdę potrzebujesz — pozostawiając tabelę logs z 89 milionami wierszy jako pustą skorupę. To coś, czego żadna flaga --no-data nie potrafi wyrazić.

Oddziel strukturę od danych w kilka sekund

DumpCleaner filtruje istniejący zrzut według typu instrukcji i według tabeli — tylko struktura, tylko dane lub dowolna mieszanka — strumieniowo, ze stałym zużyciem pamięci. Natywna aplikacja macOS i iPadOS, jednorazowy zakup.

Pobierz z App Store

Najczęściej zadawane pytania

Czy mogę wyeksportować dane bez schematu?

Tak. Wyłącz CREATE TABLE i CREATE INDEX (lub wybierz zestaw Tylko dane) i zachowaj INSERT INTO. DumpCleaner eksportuje same wiersze, gotowe do wczytania do już istniejącego schematu.

Czy eksport samej struktury zachowuje indeksy i klucze obce?

Tak. Tylko struktura zachowuje CREATE TABLE, CREATE INDEX, ALTER TABLE i definicje kluczy obcych — wszystko, co definiuje bazę danych. Usuwane są tylko wiersze danych INSERT.

Czy mogę mieszać — strukturę dla wszystkich tabel, dane dla niektórych?

Tak. Filtrowanie odbywa się per typ instrukcji i per tabela, a oba się łączą. Zachowaj strukturę każdej tabeli, ale dołącz dane INSERT tylko dla kilku tabel, których naprawdę potrzebujesz.

Czy działa to z PostgreSQL?

Tak. DumpCleaner odczytuje zrzuty MySQL, MariaDB i PostgreSQL oraz wykrywa format automatycznie, więc eksporty tylko struktury i tylko danych działają tak samo dla plików pg_dump.

Schemat bez danych — albo dane bez schematu

Przeciągnij, przełącz typy instrukcji, eksportuj. DumpCleaner dzieli dowolny zrzut na dokładnie tę część, której potrzebujesz.

Pobierz z App Store