Export pouze schématu (struktury) z SQL dumpu

Na disku máte plný dump, ale chcete jen strukturu — CREATE TABLE, indexy, cizí klíče — bez tabulek logů s 89 miliony řádků. Nebo naopak: jen data, žádné příkazy CREATE. Vysvětlíme, proč obvyklé přepínače dumpu existujícímu souboru nepomohou, a jak oddělit strukturu od dat na jedno kliknutí.

Neustále se objevují tři situace:

Proč mysqldump --no-data nestačí

Klasická rada je mysqldump --no-data (jen struktura) nebo mysqldump --no-create-info (jen data). Oba jsou exportní přepínače: mění to, co obsahuje nový dump z běžící databáze. Pro dump, který už máte na disku jako soubor .sql, neudělají nic.

V praxi soubor často přijde od někoho jiného, ze zálohovací úlohy nebo ze serveru, ke kterému už nemáte živý přístup. Nemůžete znovu spustit mysqldump proti databázi, která není dostupná — přihlašovací údaje jsou pryč, server je vyřazen z provozu nebo je soubor prostě vše, co jste dostali. V tu chvíli jsou přepínače k ničemu a nezbývá než editovat samotný soubor.

Ruční způsob

Nasnadě je odstranit řádky pomocí grep nebo sed. Pro zachování struktury a zahození dat:

# ponechat vše kromě řádků INSERT
grep -v '^INSERT INTO' dump.sql > schema.sql

# nebo ponechat pouze řádky INSERT pro soubor jen s daty
grep '^INSERT INTO' dump.sql > data.sql

Na malém, úhledném dumpu to vypadá dobře — a pak to na reálném selže:

Skončíte tak, že ladíte svůj vlastní filtr místo toho, abyste dostali své schéma.

Jen struktura nebo jen data s DumpCleaner

DumpCleaner rozumí SQL příkazům místo shody na řádcích, takže odděluje strukturu od dat spolehlivě — u souborů libovolné velikosti:

  1. Přetáhněte svůj .sql dump do DumpCleaner (MySQL, MariaDB nebo PostgreSQL). Parsuje soubor streamováním, takže se vícegigabajtový dump načte s konstantní pamětí.
  2. Přepněte typy příkazů, které chcete: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Odškrtněte INSERT INTO a dostanete jen strukturu; odškrtněte CREATE TABLE / CREATE INDEX a dostanete jen data.
  3. Nebo zvolte přednastavení — Jen struktura nebo Jen data — a nastavte všechny přepínače v jednom kroku, poté případně dolaďte pro jednotlivé tabulky.
  4. Exportujte. Dostanete štíhlý soubor se schématem pro staging nebo CI, nebo čistý dump jen s daty pro naplnění.

Protože filtr respektuje jednotlivé příkazy, víceřádkový rozšířený INSERT se zachová nebo zahodí jako celek — nikdy se nerozsekne uprostřed.

Skutečná síla spočívá v tom, že filtrování funguje podle typu příkazu a podle tabulky a obojí se kombinuje. Můžete ponechat strukturu každé tabulky, ale zahrnout data INSERT jen pro tři tabulky, které skutečně potřebujete — a nechat 89milionovou tabulku logs jako prázdnou schránku. To žádný přepínač --no-data nedokáže vyjádřit.

Oddělte strukturu od dat během několika sekund

DumpCleaner filtruje existující dump podle typu příkazu a podle tabulky — jen struktura, jen data nebo jakákoli kombinace — streamovaně, s konstantní pamětí. Nativní aplikace pro macOS a iPadOS, jednorázový nákup.

Stáhnout z App Store

Časté dotazy

Mohu exportovat data bez schématu?

Ano. Vypněte CREATE TABLE a CREATE INDEX (nebo zvolte přednastavení Jen data) a ponechte INSERT INTO. DumpCleaner vyexportuje jen řádky, připravené k načtení do schématu, které už existuje.

Zachová export jen struktury indexy a cizí klíče?

Ano. Jen struktura zachová CREATE TABLE, CREATE INDEX, ALTER TABLE a definice cizích klíčů — vše, co definuje databázi. Odstraní se pouze datové řádky INSERT.

Mohu to kombinovat — struktura pro všechny tabulky, data pro některé?

Ano. Filtrování je podle typu příkazu a podle tabulky a obojí se kombinuje. Ponechte strukturu každé tabulky, ale zahrňte data INSERT jen pro těch pár tabulek, které skutečně potřebujete.

Funguje to s PostgreSQL?

Ano. DumpCleaner čte dumpy MySQL, MariaDB a PostgreSQL a formát rozpozná automaticky, takže exporty jen struktury a jen dat fungují stejně i pro soubory pg_dump.

Schéma bez dat — nebo data bez schématu

Přetáhnout, přepnout typy příkazů, exportovat. DumpCleaner rozdělí libovolný dump přesně na tu část, kterou potřebujete.

Stáhnout z App Store