sql >> データベース >  >> RDS >> Mysql

MySQL DBのすべてのテーブルのプレフィックスを変更するにはどうすればよいですか?

    zerkmsソリューションは私にはうまくいきませんでした。 information_schemaを指定する必要がありました Tablesをクエリできるデータベース テーブル。

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

    編集:

    RENAMETABLEを1回だけ呼び出すようにクエリを最適化しました。私が立ち入ったのは、連結された出力が341文字で切り捨てられたという事実でした。これは、MySQL変数group_concat_max_lenを設定することで解決できます(サーバーで許可されている場合)。 より高い値に:

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


    1. SQL ServerのSYSDATETIME()とGETDATE():違いは何ですか?

    2. MySQLスキーマをデータとともにエクスポートする方法は?

    3. MariaDB LENGTH()とLENGTHB():違いは何ですか?

    4. MySQLの複数のテーブルからのCOUNT(*)