sql >> Database >  >> RDS >> Mysql

MySQL importeer database maar negeer specifieke tabel

Het geaccepteerde antwoord van RandomSeed kan lang duren! Het importeren van de tabel (om hem later te laten vallen) kan erg verspillend zijn, afhankelijk van de grootte.

Voor een bestand gemaakt met

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

Ik krijg momenteel een bestand van ongeveer 7 GB, waarvan 6 GB gegevens voor een logtabel die ik daar niet 'nodig' heb; het herladen van dit bestand duurt een paar uur. Als ik opnieuw moet laden (voor ontwikkelingsdoeleinden, of indien ooit nodig voor een live herstel), ski ik het bestand als volgt:

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

En herlaad met:

mysql -u user -ppasswd DBname < reduced.sql

Dit geeft me een volledige database, met de "ongewenste" tabel gemaakt maar leeg. Als je de tafels echt helemaal niet wilt, laat je de lege tafels gewoon vallen nadat het laden is voltooid.

Voor meerdere tabellen zou je zoiets als dit kunnen doen:

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

Er IS een 'gotcha' - kijk uit voor procedures in uw dump die "INSERT INTO TABLE_TO_SKIP" kunnen bevatten.



  1. Stop zoekopdracht via pdo

  2. Selecteer elke maand, ook al bestaat de maand niet in de mysql-tabel

  3. Vergrendelde tafels detecteren (vergrendeld door LOCK TABLE)

  4. Django-databaselaag gebruiken buiten Django?