Ekspordi SQL-tõmmisest ainult skeem (struktuur)

Sul on kettal täielik tõmmis, kuid soovid ainult struktuuri — CREATE TABLE, indeksid, välisvõtmed — ilma 89 miljoni realiste logitabeliteta. Või vastupidi: ainult andmeid, ilma CREATE-lauseteta. Siin on põhjus, miks tavalised tõmmiselipud olemasolevat faili ei aita, ja kuidas struktuur andmetest lahutada ühe klõpsuga.

Kolm olukorda tulevad pidevalt ette:

Miks mysqldump --no-data ei ole piisav

Klassikaline nõuanne on mysqldump --no-data (ainult struktuur) või mysqldump --no-create-info (ainult andmed). Mõlemad on ekspordilipud: need muudavad, mida värske tõmmis töötavast andmebaasist sisaldab. Need ei tee midagi tõmmise jaoks, mis on sul juba .sql-failina kettal olemas.

Praktikas saabub fail sageli kelleltki teiselt või varundustööst või serverist, millele sul enam otseligipääsu pole. Sa ei saa mysqldump-i uuesti käivitada andmebaasi vastu, mis pole kättesaadav — mandaadid on kadunud, server on kasutuselt kõrvaldatud või fail on lihtsalt kõik, mis sulle anti. Sel hetkel on lipud kasutud ja sa oled jäetud faili ennast redigeerima.

Käsitsi viis

Ilmne samm on ridade eemaldamine grep-i või sed-iga. Struktuuri hoidmiseks ja andmete kõrvaldamiseks:

# hoia kõike peale INSERT-ridade
grep -v '^INSERT INTO' dump.sql > schema.sql

# või hoia ainult INSERT-read ainult-andmete faili jaoks
grep '^INSERT INTO' dump.sql > data.sql

See tundub korras väikese, korraliku tõmmise peal — ja siis katkeb tõelise peal:

Lõpuks silud oma filtrit, selle asemel et saada oma skeem kätte.

Ainult struktuur või ainult andmed DumpCleaneriga

DumpCleaner mõistab SQL-lauseid, selle asemel et sobitada ridu, seega lahutab see struktuuri andmetest usaldusväärselt — mis tahes suurusega failides:

  1. Lohista oma .sql-tõmmis DumpCleanerisse (MySQL, MariaDB või PostgreSQL). See parsib faili voogedastades, seega mitmegigabaidine tõmmis laaditakse konstantse mäluga.
  2. Lülita sisse/välja lausetüübid, mida soovid: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Võta märge maha INSERT INTO-lt ja saad ainult struktuuri; võta märge maha CREATE TABLE / CREATE INDEX-lt ja saad ainult andmed.
  3. Või vali eelseadistus — Ainult struktuur või Ainult andmed — et seada kõik lülitid ühe sammuga, seejärel täpsusta soovi korral tabelite kaupa.
  4. Ekspordi. Saad lahja skeemifaili testkeskkonna või CI jaoks või puhta ainult-andmete tõmmise algandmete jaoks.

Kuna filter on lauseteadlik, hoitakse või kõrvaldatakse mitmerealine laiendatud INSERT tervikuna — seda ei lõigata kunagi keskelt läbi.

Tegelik võimsus seisneb selles, et filtreerimine töötab lausetüübi kaupa ja tabeli kaupa, ning need kaks kombineeruvad. Sa saad hoida iga tabeli struktuuri, kuid kaasata INSERT-andmed ainult kolme tabeli jaoks, mida tegelikult vajad — jättes 89 miljoni realise logs-tabeli tühjaks kojaks. See on midagi, mida ükski --no-data lipp ei suuda väljendada.

Lahuta struktuur andmetest sekunditega

DumpCleaner filtreerib olemasolevat tõmmist lausetüübi ja tabeli kaupa — ainult struktuur, ainult andmed või mis tahes segu — voogedastades, konstantse mäluga. Natiivne macOS-i ja iPadOS-i rakendus, ühekordne ost.

Laadi alla App Store'ist

Korduma kippuvad küsimused

Kas ma saan eksportida andmed ilma skeemita?

Jah. Keela CREATE TABLE ja CREATE INDEX (või vali eelseadistus Ainult andmed) ja hoia INSERT INTO. DumpCleaner ekspordib ainult read, valmis laadimiseks juba olemasolevasse skeemi.

Kas ainult-struktuuri eksport säilitab indeksid ja välisvõtmed?

Jah. Ainult struktuur hoiab CREATE TABLE, CREATE INDEX, ALTER TABLE ja välisvõtmete definitsioonid — kõik, mis andmebaasi määratleb. Eemaldatakse ainult INSERT-andmeread.

Kas ma saan segada — struktuur kõigi tabelite jaoks, andmed mõne jaoks?

Jah. Filtreerimine on lausetüübi ja tabeli kaupa ning mõlemad kombineeruvad. Hoia iga tabeli struktuuri, kuid kaasa INSERT-andmed ainult nende üksikute tabelite jaoks, mida tegelikult vajad.

Kas see toimib PostgreSQL-iga?

Jah. DumpCleaner loeb MySQL-i, MariaDB ja PostgreSQL-i tõmmiseid ning tuvastab formaadi automaatselt, seega ainult-struktuuri ja ainult-andmete eksport toimivad pg_dump-failide puhul samamoodi.

Skeem ilma andmeteta — või andmed ilma skeemita

Lohista, lülita lausetüübid sisse-välja, ekspordi. DumpCleaner lahutab mis tahes tõmmise täpselt selleks osaks, mida vajad.

Laadi alla App Store'ist