2011-01-15 9 views

Antwort

5

Da MySQL Platzhalter wie% in Umbenennungs Tabelle nicht verwenden, warum Sie nicht die Datenbank exportieren tun, um eine globale Suchanfrage in Ihrem bevorzugten Texteditor wp_ und durch wp_13_ ersetzen?

Dann können Sie es wieder importieren.

Das sollte es tun.

+0

Weniger Aufwand und arbeitete wie ein Charme! Vielen Dank! – rpophessagr

+0

Super einfach, auf jeden Fall der einfachste Weg, um Tabellenpräfixe zu aktualisieren. Vielen Dank. –

1

Ich weiß, dass Sie MySQL verwenden, obwohl ich so etwas für SQL Server (mit T-SQL) geschrieben habe. Es ist wie mit einem Bulldozer, um eine Tür zu öffnen, aber es funktioniert. Sie könnten es möglicherweise als Basis für eine MySQL-Abfrage verwenden ... definitiv keine sofort verwendbare Antwort, aber etwas, das Sie die Logik für eine gespeicherte Prozedur absetzen könnten, wenn Sie wollten.

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 
+0

Danke! Ich werde es versuchen und dich wissen lassen. – rpophessagr

+0

Ehrfürchtig. Denken Sie daran, dass dies nicht direkt in MySQL funktioniert, da es für SQL Server entwickelt wurde. Ich bin nicht wirklich sicher, welche erweiterte Sprache MySQL hat (das ist T-SQL, das ist für SQL Server, Access hat JET SQL, Oracle hat auch etwas, aber ich kann mich nicht erinnern, was.) Können Sie ein kleines Programm ausführen in PHP, das sich mit der Datenbank verbindet, da es definitiv möglich wäre, es in PHP zu konvertieren. – joshhendo

+0

Hmm Ich habe es im MySQL SQL-Browser ausgeführt und habe: # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in der Bedienungsanleitung zu Ihrem MySQL-Server-Version für den richtigen Syntax entspricht verwenden in der Nähe von 'ERKLÄREN @FrontWord nvarchar (20) DECLARE @NewFrontWord nvarchar (20) SET @Fron' at line 1 alle Ideen, wie Abhilfe zu schaffen, dass ? – rpophessagr

1

mysql Umbenennungssyntax unterstützt keine Wildcards wie das von Ihnen verwendete%. Sie können immer noch mehrere Tabellen in einem Befehl umbenennen.

z.B. wenn Sie Tabelle wp_A, wp_B Sie wp_13_A umbenennen, wp_13_B

RENAME TABLE 'wp_A' TO 'wp_13_A', 'wp_B' TO 'wp_13_B' 
+0

Ich hatte gehofft, das zu vermeiden. Danke für die Bemühung. – rpophessagr

0

Sie können den erforderlichen DDL-Code mit sql generieren. Nicht schön, aber mächtig :)

Kopieren Sie einfach & fügen Sie das Ergebnis ein.

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;       | 
+-----------------------------------------------------------------------+ 
Verwandte Themen