Izvozite samo shemo (strukturo) iz SQL izvoza

Na disku imate poln izvoz, želite pa le strukturo — CREATE TABLE, indekse, tuje ključe — brez tabel dnevnikov z 89 milijoni vrstic. Ali obratno: samo podatke, brez CREATE stavkov. Tu je razlog, zakaj običajne zastavice za izvoz ne pomagajo pri obstoječi datoteki, in kako z enim klikom ločite strukturo od podatkov.

Tri situacije se ponavljajo:

Zakaj mysqldump --no-data ni dovolj

Klasičen nasvet je mysqldump --no-data (samo struktura) ali mysqldump --no-create-info (samo podatki). Oba sta zastavici za izvoz: spremenita, kaj vsebuje svež izvoz iz delujoče baze podatkov. Za izvoz, ki ga že imate na disku kot datoteko .sql, ne naredita ničesar.

V praksi datoteka pogosto pride od nekoga drugega ali iz varnostnega kopiranja ali s strežnika, do katerega nimate več živega dostopa. mysqldump ne morete znova zagnati proti bazi podatkov, ki ni dosegljiva — poverilnice so izginile, strežnik je razgrajen ali pa je datoteka preprosto vse, kar so vam izročili. Na tej točki so zastavice neuporabne, vi pa urejate datoteko samo.

Ročni način

Očitna poteza je, da vrstice odstranite z grep ali sed. Da obdržite strukturo in izpustite podatke:

# obdrži vse razen INSERT vrstic
grep -v '^INSERT INTO' dump.sql > schema.sql

# ali obdrži samo INSERT vrstice za datoteko samo s podatki
grep '^INSERT INTO' dump.sql > data.sql

To izgleda v redu na majhnem, urejenem izvozu — nato pa se pokvari na pravem:

Na koncu razhroščujete svoj lasten filter, namesto da bi dobili svojo shemo.

Samo struktura ali samo podatki z DumpCleaner

DumpCleaner razume SQL stavke, namesto da bi ujemal vrstice, zato zanesljivo loči strukturo od podatkov — na datotekah katere koli velikosti:

  1. Povlecite svoj .sql izvoz v DumpCleaner (MySQL, MariaDB ali PostgreSQL). Datoteko razčleni s pretakanjem, zato se izvoz velikosti več gigabajtov naloži s konstantnim pomnilnikom.
  2. Preklopite vrste stavkov, ki jih želite: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Odkljukajte INSERT INTO in dobite samo strukturo; odkljukajte CREATE TABLE / CREATE INDEX in dobite samo podatke.
  3. Ali izberite prednastavitev — Samo struktura ali Samo podatki — da v enem koraku nastavite vsak preklop, nato pa po želji prilagodite po tabeli.
  4. Izvozite. Dobite vitko datoteko sheme za pripravljalno okolje ali CI ali čist izvoz samo s podatki za polnjenje.

Ker se filter zaveda stavkov, se večvrstični razširjeni INSERT obdrži ali izpusti kot celota — nikoli prerezan na sredini.

Prava moč je v tem, da filtriranje deluje po vrsti stavka in po tabeli, obe pa se kombinirata. Lahko obdržite strukturo vsake tabele, INSERT podatke pa vključite le za tri tabele, ki jih dejansko potrebujete — tabelo logs z 89 milijoni vrstic pustite kot prazno lupino. To je nekaj, česar nobena zastavica --no-data ne more izraziti.

Ločite strukturo od podatkov v nekaj sekundah

DumpCleaner filtrira obstoječ izvoz po vrsti stavka in po tabeli — samo struktura, samo podatki ali poljubna mešanica — pretočno, s konstantnim pomnilnikom. Domača aplikacija za macOS in iPadOS, enkraten nakup.

Prenesi v trgovini App Store

Pogosta vprašanja

Ali lahko izvozim podatke brez sheme?

Da. Onemogočite CREATE TABLE in CREATE INDEX (ali izberite prednastavitev Samo podatki) in obdržite INSERT INTO. DumpCleaner izvozi le vrstice, pripravljene za nalaganje v že obstoječo shemo.

Ali izvoz samo strukture ohrani indekse in tuje ključe?

Da. Samo struktura obdrži CREATE TABLE, CREATE INDEX, ALTER TABLE in definicije tujih ključev — vse, kar določa bazo podatkov. Odstranijo se le INSERT podatkovne vrstice.

Ali lahko mešam — struktura za vse tabele, podatki za nekatere?

Da. Filtriranje poteka po vrsti stavka in po tabeli, obe pa se kombinirata. Obdržite strukturo vsake tabele, INSERT podatke pa vključite le za nekaj tabel, ki jih dejansko potrebujete.

Ali to deluje s PostgreSQL?

Da. DumpCleaner bere izvoze MySQL, MariaDB in PostgreSQL ter samodejno zazna format, zato izvoza samo strukture in samo podatkov delujeta enako tudi za datoteke pg_dump.

Shema brez podatkov — ali podatki brez sheme

Povlecite, preklopite vrste stavkov, izvozite. DumpCleaner razdeli kateri koli izvoz natanko na del, ki ga potrebujete.

Prenesi v trgovini App Store