私のサイトのすべてのテーブルのプレフィックスを変更しようとしています。私はこれを行うことができると思った:ワイルドカードを使用したテーブルプレフィックスの名前変更
rename table 'wp_%' to 'wp_13_%'
しかし、それは動作していないようです。私は間違っているかもしれないことへのインプットが大好きです。
ありがとうございます!
私のサイトのすべてのテーブルのプレフィックスを変更しようとしています。私はこれを行うことができると思った:ワイルドカードを使用したテーブルプレフィックスの名前変更
rename table 'wp_%' to 'wp_13_%'
しかし、それは動作していないようです。私は間違っているかもしれないことへのインプットが大好きです。
ありがとうございます!
を持っている場合ので、あなたの好みのテキストエディタで行うグローバルさがすのデータベースをエクスポートしていない理由をリネームテーブルで%のようなワイルドカードを使用していないのmysql wp_とwp_13_で置き換えますか?
その後、再度インポートすることができます。
それはそれを行う必要があります。
私はSQL Server用に書かれたそのような何か持っているけれども、私は、MySQLを使用している知っている(T-SQLを使用しています。)これは、ドアを開くためにブルドーザーを使っているようだが、それは動作します。あなたはおそらくMySQLのクエリのための基礎としてそれを使用することができます...間違いなく即座に使用可能な答えが、あなたが望む場合は、ストアドプロシージャのロジックを基にすることができるもの。
DECLARE @FrontWord nvarchar(20)
DECLARE @NewFrontWord nvarchar(20)
SET @FrontWord = 'wp_'
SET @NewFrontWord = 'wp_13_'
DECLARE MY_CURSOR Cursor
FOR (
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_NAME LIKE @FrontWord + '%'
)
Open MY_CURSOR
DECLARE @tablename nvarchar(20)
DECLARE @lastpart nvarchar(20)
DECLARE @newtablename nvarchar(20)
Fetch NEXT FROM MY_Cursor INTO @tablename
While (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
SET @lastpart = RIGHT(@tablename, LEN(@tablename) - LEN(@FrontWord))
SET @newtablename = @NewFrontWord + @lastpart;
PRINT @newtablename
EXEC sp_rename @tablename, @newtablename
FETCH NEXT FROM MY_CURSOR INTO @tablename
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
GO
ありがとう!私はそれを試し、あなたに知らせるでしょう。 – rpophessagr
これはSQL Server用に設計されているため、MySQLで直接動作しないことを覚えておいてください。私は実際にMySQLの拡張言語が何であるかは分かりません(これはSQL Server用のT-SQL、AccessにはJET SQL、Oracleには何かがありますが覚えていません)。小さなプログラムデータベースに接続するPHPでは、PHPに変換することは間違いありません。 – joshhendo
うーん、私は、mysqlのSQLブラウザでそれを実行して得た: #1064 - あなたはSQL構文でエラーがあります。の対処方法任意のアイデアライン1 に近い使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください「@FrontWordのデータ型はnvarcharを宣言(20) DECLAREの@NewFrontWordのデータ型はnvarchar(20) SET @Fron」 ? – rpophessagr
mysqlの名前の変更構文では、使用した%のようなワイルドカードはサポートされていません。 1つのコマンドで複数のテーブルの名前を変更することはできます。
あなたはwp_13_Aに名前を変更することができwp_Bテーブルwp_A、wp_13_B
RENAME TABLE 'wp_A' TO 'wp_13_A', 'wp_B' TO 'wp_13_B'
私はそれを避けることを望んでいました。努力をいただきありがとうございます。 – rpophessagr
必要なDDLコードは、sqlで生成できます。かなり、しかし強力ではない:)
だけで結果を貼り付け&をコピーします。
set session sql_mode='PIPES_AS_CONCAT';
select 'alter table '
|| table_name
|| ' rename to wp_13_'
|| substr(table_name, 4)
|| ';' as ddl
from information_schema.tables
where table_schema = 'BLOG';
+-----------------------------------------------------------------------+
| ddl |
+-----------------------------------------------------------------------+
| alter table wp_commentmeta rename to wp_13_commentmeta; |
| alter table wp_comments rename to wp_13_comments; |
| alter table wp_links rename to wp_13_links; |
| alter table wp_options rename to wp_13_options; |
| alter table wp_postmeta rename to wp_13_postmeta; |
| alter table wp_posts rename to wp_13_posts; |
| alter table wp_term_relationships rename to wp_13_term_relationships; |
| alter table wp_term_taxonomy rename to wp_13_term_taxonomy; |
| alter table wp_terms rename to wp_13_terms; |
| alter table wp_usermeta rename to wp_13_usermeta; |
| alter table wp_users rename to wp_13_users; |
+-----------------------------------------------------------------------+
煩わしさが少なく、魅力的に機能しました!ありがとう! – rpophessagr
テーブルの接頭辞を更新するための、簡単でシンプルな、もっとも簡単な方法。ありがとう。 –