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

MySQLデータベースの名前をすばやく変更する(スキーマ名を変更する)にはどうすればよいですか?

    InnoDBの場合 、次のように機能するようです。新しい空のデータベースを作成してから、各テーブルの名前を順番に新しいデータベースに変更します。

    RENAME TABLE old_db.table TO new_db.table;
    

    その後、権限を調整する必要があります。

    シェルでのスクリプトの場合、次のいずれかを使用できます。

    mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
        do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done
    

    または

    for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;
    

    注:

    • オプション-pの間にスペースはありません とパスワード。データベースにパスワードがない場合は、-u username -ppasswordを削除します 一部。
    • 一部のテーブルにトリガーがある場合、上記の方法を使用して別のデータベースに移動することはできません(Trigger in wrong schema エラー)。その場合は、従来の方法を使用してデータベースのクローンを作成してから、古いデータベースを削除します。

      mysqldump old_db | mysql new_db

    • プロシージャを保存している場合は、後でコピーできます:

      mysqldump -R old_db | mysql new_db



    1. mysqlのgroup_concatに似たOracleの関数はありますか?

    2. MariaDB ColumnStore1.1.3GAを搭載した新しいMariaDBAXリリース

    3. LinuxにMicrosoftSQLをインストールする方法

    4. Oracle SQL Developerでクエリ結果をcsvにエクスポートするにはどうすればよいですか?