sql >> Database teknologi >  >> RDS >> Mysql

MySQL importer database, men ignorer specifik tabel

Det accepterede svar fra RandomSeed kunne tage lang tid! Import af bordet (bare for at droppe det senere) kan være meget spild afhængigt af størrelsen.

For en fil oprettet ved hjælp af

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

Jeg får i øjeblikket en fil på 7GB, hvoraf 6GB er data til en logtabel, som jeg ikke 'behøver' at være der; genindlæsning af denne fil tager et par timer. Hvis jeg har brug for at genindlæse (til udviklingsformål, eller hvis det nogensinde er nødvendigt for en livegendannelse), skimmer jeg filen således:

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

Og genindlæs med:

mysql -u user -ppasswd DBname < reduced.sql

Dette giver mig en komplet database, med den "uønskede" tabel oprettet, men tom. Hvis du virkelig ikke vil have tabellerne overhovedet, skal du blot slippe de tomme tabeller, når indlæsningen er færdig.

For flere borde kan du gøre noget som dette:

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

Der ER en "gotcha" - pas på procedurer i dit dump, der kan indeholde "INSERT INTO TABLE_TO_SKIP".



  1. SQLiteException ingen sådan tabel:ItemTable under kompilering:Select_id,.... from ItemTable

  2. django.db.utils.ProgrammingError:Relationen eksisterer allerede

  3. Indsæt Array-værdier indsæt til enkelt ID i mysql-databasen ved hjælp af php og PDO

  4. JSON_ARRAY() – Opret et JSON-array fra en liste over værdier i MySQL