Eksportēt tikai shēmu (struktūru) no SQL izgāztuves

Tev diskā ir pilna izgāztuve, bet tev vajag tikai struktūru — CREATE TABLE, indeksus, ārējās atslēgas — bez 89 miljonu rindu žurnālu tabulām. Vai pretēji: tikai datus, bez CREATE priekšrakstiem. Lūk, kāpēc ierastie izgāztuves karodziņi nepalīdz esošam failam un kā atdalīt struktūru no datiem ar vienu klikšķi.

Trīs situācijas atkārtojas atkal un atkal:

Kāpēc mysqldump --no-data nav pietiekami

Klasiskais padoms ir mysqldump --no-data (tikai struktūra) vai mysqldump --no-create-info (tikai dati). Abi ir eksporta karodziņi: tie maina to, ko satur jauna izgāztuve no darbojošās datubāzes. Tie neko nedara izgāztuvei, kas tev jau ir diskā kā .sql fails.

Praksē fails bieži nonāk no kāda cita, vai no rezerves kopēšanas darba, vai no servera, kuram tev vairs nav dzīvas piekļuves. Tu nevari atkārtoti palaist mysqldump pret datubāzi, kas nav sasniedzama — akreditācijas dati ir pazuduši, serveris ir izņemts no ekspluatācijas, vai fails ir vienkārši viss, kas tev tika iedots. Tajā brīdī karodziņi ir bezjēdzīgi, un tev jārediģē pats fails.

Manuālais veids

Acīmredzamais solis ir izņemt rindas ar grep vai sed. Lai paturētu struktūru un izmestu datus:

# patur visu, izņemot INSERT rindas
grep -v '^INSERT INTO' dump.sql > schema.sql

# vai patur tikai INSERT rindas tikai datu failam
grep '^INSERT INTO' dump.sql > data.sql

Tas izskatās labi mazā, kārtīgā izgāztuvē — un tad salūst īstā:

Tu galu galā atkļūdo savu paša filtru, nevis iegūsti savu shēmu.

Tikai struktūra vai tikai dati ar DumpCleaner

DumpCleaner saprot SQL priekšrakstus, nevis sakrīt ar rindām, tāpēc tas droši atdala struktūru no datiem — jebkura izmēra failos:

  1. Ievelc savu .sql izgāztuvi DumpCleaner (MySQL, MariaDB vai PostgreSQL). Tas parsē failu, straumējot, tāpēc daudzu gigabaitu izgāztuve ielādējas ar nemainīgu atmiņu.
  2. Pārslēdz priekšrakstu tipus, kurus vēlies: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Noņem atzīmi INSERT INTO, un tu iegūsti tikai struktūru; noņem atzīmi CREATE TABLE / CREATE INDEX, un tu iegūsti tikai datus.
  3. Vai izvēlies iepriekšiestatījumu — Tikai struktūra vai Tikai dati — lai iestatītu katru pārslēgu vienā solī, tad, ja vēlies, precizē pa tabulai.
  4. Eksportē. Tu iegūsti kompaktu shēmas failu izmēģinājuma videi vai CI, vai tīru tikai datu izgāztuvi sēklošanai.

Tā kā filtrs ir priekšrakstus apzinošs, daudzrindu paplašināts INSERT tiek paturēts vai izmests kā vesels — nekad negriezts vidū.

Īstais spēks ir tas, ka filtrēšana darbojas pa priekšraksta tipam un pa tabulai, un abi apvienojas. Tu vari paturēt katras tabulas struktūru, bet iekļaut INSERT datus tikai trim tabulām, kuras patiešām vajag — atstājot 89 miljonu rindu logs tabulu kā tukšu čaulu. Tas ir kaut kas, ko neviens --no-data karodziņš nevar izteikt.

Atdali struktūru no datiem dažās sekundēs

DumpCleaner filtrē esošu izgāztuvi pa priekšraksta tipam un pa tabulai — tikai struktūru, tikai datus vai jebkuru sajaukumu — straumējot, ar nemainīgu atmiņu. Vietējā macOS un iPadOS lietotne, vienreizējs pirkums.

Lejupielādēt App Store

Biežāk uzdotie jautājumi

Vai es varu eksportēt datus bez shēmas?

Jā. Atspējo CREATE TABLE un CREATE INDEX (vai izvēlies Tikai dati iepriekšiestatījumu) un patur INSERT INTO. DumpCleaner eksportē tikai rindas, gatavas ielādēšanai shēmā, kas jau eksistē.

Vai tikai struktūras eksports saglabā indeksus un ārējās atslēgas?

Jā. Tikai struktūra patur CREATE TABLE, CREATE INDEX, ALTER TABLE un ārējo atslēgu definīcijas — visu, kas definē datubāzi. Tiek noņemtas tikai INSERT datu rindas.

Vai es varu sajaukt — struktūru visām tabulām, datus dažām?

Jā. Filtrēšana ir pa priekšraksta tipam un pa tabulai, un abi apvienojas. Patur katras tabulas struktūru, bet iekļauj INSERT datus tikai tām dažām tabulām, kuras patiešām vajag.

Vai tas darbojas ar PostgreSQL?

Jā. DumpCleaner nolasa MySQL, MariaDB un PostgreSQL izgāztuves un nosaka formātu automātiski, tāpēc tikai struktūras un tikai datu eksporti darbojas tāpat arī pg_dump failiem.

Shēma bez datiem — vai dati bez shēmas

Ievelc, pārslēdz priekšrakstu tipus, eksportē. DumpCleaner sadala jebkuru izgāztuvi tieši tajā daļā, kura tev vajadzīga.

Lejupielādēt App Store