0
私は複数のMySQLテーブルを使用し、それらの間でmysql_select_db関数でスイッチするWebサイトをPHPで持っています。PHP + MySQLマルチDBウェブサイトをプレフィックス付きのシングルDBウェブサイトにする。
DB1 (table1, table2, table3)
DB2 (table1, table2)
最後のホスティングでは、1つのデータベースのみがサポートされています。だから私は、mysql_select_db関数をカスタムmysql_switch_prefix関数に置き換えるシステムを考えました。この関数は、次のクエリのすべてのテーブル名のプレフィックスとして使用される文字列を格納します。
DB (DB1_table1, DB1_table2, DB1_table3, DB2_table1, DB2_table2)
次は私が「db_prefix」変数で始まるテーブル名を持つすべてのテーブル名を置き換えるカスタムするmysql_query関数を使用します。
SELECT * FROM `table1` -> SELECT * FROM `DB1_table1`
変数で始まるテーブル名でSQL文ですべてのテーブル名を交換する方法(または正規表現)がありますか?
ここで、単に 'database'sだけでなく、' schema'sを持っていれば、それぞれを別々の 'schema'でダンプすることをお勧めします。それらが接頭辞付きである(テーブル名の衝突がありますか)という理由がありますか?テーブルの名前を変更する必要がありますか?それ以外の場合は、名前を同じにしておき、面倒を取らないようにしましょう。 –
問題は、 'from'の後だけでなく、かなりの数の場所とSQLクエリでテーブル名を持つことができるということです。正規表現を構築することは可能かもしれませんが、おそらくケースを超えてしまうでしょう。 – fge