sql >> Database >  >> RDS >> Mysql

Hoe kan ik prefixen in alle tabellen in mijn MySQL DB wijzigen?

zerkms-oplossing werkte niet voor mij. Ik moest het information_schema . specificeren database om de Tables . te kunnen doorzoeken tafel.

SELECT 
    CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM 
    `information_schema`.`Tables` WHERE TABLE_SCHEMA='test';

Bewerken:

De query geoptimaliseerd om RENAME TABLE slechts één keer aan te roepen. Iets waar ik tegenaan liep, was het feit dat de aaneengeschakelde uitvoer werd afgekapt op 341 tekens. Dit kan worden opgelost (indien toegestaan ​​door uw server) door de MySQL-variabele group_concat_max_len in te stellen naar een hogere waarde:

SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.


  1. 20 tips:bereid uw database voor op Black Friday en Cyber ​​Monday

  2. Bel mysql geneste/innerlijke functies in querydsl

  3. Mysql trage zoekopdracht:INNER JOIN + ORDER BY veroorzaakt filesort

  4. SQL Server VOOR JSON AUTO Voorbeelden (T-SQL)