sql >> Databasteknik >  >> RDS >> Mysql

MySQL importera databas men ignorera specifik tabell

Det accepterade svaret från RandomSeed kan ta lång tid! Att importera bordet (bara för att släppa det senare) kan vara väldigt slösaktigt beroende på storlek.

För en fil skapad med

mysqldump -u user -ppasswd --opt --routines DBname > DBdump.sql

Jag får för närvarande en fil på cirka 7 GB, varav 6 GB är data för en loggtabell som jag inte "behöver" vara där; att ladda om den här filen tar ett par timmar. Om jag behöver ladda om (för utvecklingsändamål, eller om det någonsin krävs för en live-återställning) skummar jag filen så här:

sed '/INSERT INTO `TABLE_TO_SKIP`/d' DBdump.sql > reduced.sql

Och ladda om med:

mysql -u user -ppasswd DBname < reduced.sql

Detta ger mig en komplett databas, med den "oönskade" tabellen skapad men tom. Om du verkligen inte vill ha tabellerna alls, släpp helt enkelt de tomma tabellerna efter att laddningen är klar.

För flera bord kan du göra något så här:

sed '/INSERT INTO `TABLE1_TO_SKIP`/d' DBdump.sql | \
sed '/INSERT INTO `TABLE2_TO_SKIP`/d' | \
sed '/INSERT INTO `TABLE3_TO_SKIP`/d' > reduced.sql

Det finns en "gotcha" - se upp för procedurer i din dump som kan innehålla "INSERT INTO TABLE_TO_SKIP".



  1. Postgres - Konvertera angränsande lista till kapslade JSON-objekt

  2. Hur väljer man topp 1 och sorteras efter datum i Oracle SQL?

  3. Lägga till en unik identifieringskolumn och lägga till standard för att generera ny guide

  4. Hur LCASE()-funktionen fungerar i MySQL