2012-04-08 1 views
9

基本的に私はMySQLにjoomlaデータベースを持っています。このデータベースには、接頭辞 'jmla_'を持つテーブルがたくさんあります。 'jmla_'接頭辞を 'jos_'接頭辞に置き換えて、これらの表のすべての名前を変更したいと思います。単純なSQLスクリプトやSQLクエリでこれを行う方法に関するアイデアはありますか?機能「検索と置換」ファイル MySQLでは、データベース内のテーブルの名前を一括して変更するにはどうすればよいですか?

  • を開くことで、任意のテキストエディタを(私はVimを好む、大きなファイルに優れた作業)を使用したファイル
  • を.SQLするphpMyAdminのを使用して

  • 答えて

    2
    1. エクスポート「検索と置換」でください実際の接頭辞を検索ボックスに入れ、置換ボックスで更新します。
    2. phpmyadminを使用してファイルをインポートします。

    phpmyadminでインポートする前に古いデータベースを削除することを忘れないでください。これは、エクスポート中に適切なオプションをチェックして行うことができます。

    +0

    を得ることができ、何行の名前の一つはそれで「jmla_」を持っている場合はどうなりますか?あるいは、データにそれがどこかにある場合は? –

    +0

    1.実際にこのケースを見たことはありません2.私の解決策はポイントを非exsistデータベースに変えるもう一つの良いことでした。 –

    +0

    より良い解決策がある場合、簡単な検索と置換を行うリスクはありません。このソリューションは、将来的にはデバッグが困難な問題を引き起こす可能性があります。 –

    3
    RENAME TABLE jmla_whatever to jos_whatever; 
    

    あなたはすべてのテーブルをカバーするためにスクリプトを記述する必要があります - あなたはshow tablesの出力を使用してスクリプトを読み込むことができます。詳細については、http://dev.mysql.com/doc/refman/5.0/en/rename-table.htmlを参照してください。

    7

    を実行し、この文:

    SELECT 'rename table '||table_name||' to '||'jos'||substr(table_name,5)||';' 
    FROM information_schema.tables 
    WHERE table_name like 'jmla%' 
    

    これは、すべてのテーブルの名前を変更するスクリプトを作成します。 &を出力してSQLクライアントに貼り付けてください。

    +4

    これを適用したいデータベースにもフィルタをかけてください。そうしないと、他のJoomlaのインストールを含むすべてのデータベースでRENAMEクエリが生成されます: 'AND TABLE_SCHEMA = 'your_joomla_db'' – Fanis

    8
    SELECT concat ('rename table ',table_name,' to ',table_name,'_old;') 
    FROM information_schema.tables 
    WHERE table_name like 'webform%' 
        and table_schema='weiss_db_new' 
    

    が動作します(あなたはANSIモードでそれを実行していない場合には、MySQLの非標準的な連結演算子に||を変更する必要があります)。

    0

    あなたはJoomla!のAkeeba Admin Toolsコンポーネントの使用を検討しましたか? Database Prefix Editorを使用してテーブルのプレフィックスを変更すると、本当にうまく動作します。 Akeeba管理ツールを使用してJoomla!を保護することができます。インストール

    Akeebaはhere

    関連する問題