Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę zmienić prefiksy we wszystkich tabelach w mojej bazie danych MySQL?

Rozwiązanie zerkms nie działało dla mnie. Musiałem określić information_schema bazy danych, aby móc odpytywać Tables tabela.

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';

Edytuj:

Zoptymalizowano zapytanie, aby wywołać RENAME TABLE tylko raz. Coś, na co wszedłem, to fakt, że połączone wyjście zostało obcięte do 341 znaków. Można to rozwiązać (jeśli pozwala na to Twój serwer), ustawiając zmienną MySQL group_concat_max_len do wyższej wartości:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL do usunięcia tabeli w MySQL

  2. Czy MySQL można bezproblemowo zastąpić MariaDB, czy w tym przypadku trzeba coś zmienić?

  3. MYSQL importuje dane z csv za pomocą LOAD DATA INFILE

  4. Znajdź wolny pokój (system rezerwacji)

  5. Jak wstawić dane z jednej tabeli bazy danych do innej tabeli bazy danych w Mysql