Avatar billede l_domino_l Nybegynder
18. december 2008 - 09:40 Der er 12 kommentarer og
3 løsninger

Copy og omdøb en masse tabeller?

Jeg har en database, hvor en masse af mine tabeller hedder noget med:

ma_kunder
ma_ordre
ma_divere

osv osv osv

Kan jeg med en SQL sætning kopier X antal tabeller der starter med ma_ og omdøbe dem til feks an_ så jeg har en kopi af alle dem der startede med ma_ og som nu hedder an_

Det er noget jeg skal gøre igen og igen på et senere tidspunkt, så det må gerne være en sætning der er nem at rette i....
Avatar billede jakobdo Ekspert
18. december 2008 - 09:45 #1
Kan du ikke gøre det via phpmyadmin ?
Avatar billede l_domino_l Nybegynder
18. december 2008 - 09:48 #2
jo jo... men kan ikke lave SQL Sætningen.... kender ikke alle de smarte syntakser...
Avatar billede jakobdo Ekspert
18. december 2008 - 10:03 #3
Du kunne kigge på:

CREATE TABLE nyt_tabel_navn SELECT * FROM gammelt_tabel_navn
Avatar billede l_domino_l Nybegynder
18. december 2008 - 10:14 #4
Nej det er ikke indholdet den skal kopier, det er navnet på tabellen...
Avatar billede l_domino_l Nybegynder
18. december 2008 - 10:22 #5
Nåh... kan se hvad du mener!

Kan man ikke lave en Loop derinde? Vi snakker 100 tabeller eller noget i den stil?

Og så laver en SELECT ma_
Avatar billede jakobdo Ekspert
18. december 2008 - 10:24 #6
Det kan du garanteret lave med php så.
Så du først trækker alle tabeller ud.
Så kan du tjekke om de starte med XXX
Hvis ja, gør noget.
Hvis nej, gør noget andet.
Avatar billede showsource Seniormester
18. december 2008 - 15:09 #7
$gettables = "SHOW TABLES FROM `tabel` LIKE 'ma_%'";
$tables = mysql_query($gettables) or die (mysql_error());

    while($t = mysql_fetch_row($tables)) {
    echo $t[0]."<br />";
    }


Det er da lidt af vejen :O)
Avatar billede arne_v Ekspert
18. december 2008 - 15:26 #8
SHOW TABLES LIKE 'ma_%'

og

CREATE TABLE xxx LIKE yyy

i app (f.eks. PHP er en mulighed).
Avatar billede arne_v Ekspert
18. december 2008 - 15:30 #9
En anden mulighed er:

SELECT CONCAT('CREATE TABLE an_', SUBSTR(4,TABLE_NAME), ' LIKE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'ma%' AND TABLE_TYPE='BASE TABLE'

og saa bare execute output.
Avatar billede arne_v Ekspert
18. januar 2009 - 04:08 #10
l_domino_l ?
Avatar billede l_domino_l Nybegynder
29. januar 2009 - 21:22 #11
Ligger I et svar?
Avatar billede jakobdo Ekspert
29. januar 2009 - 21:37 #12
Hvis jeg er en del af I, så får du et svar her.
Avatar billede arne_v Ekspert
29. januar 2009 - 21:41 #13
ditto
Avatar billede showsource Seniormester
30. januar 2009 - 06:31 #14
me'r ditto
Avatar billede jakobdo Ekspert
30. januar 2009 - 07:00 #15
Takker for point.
Og hvor kom de 0,01 point lige fra ?
200 / 3 = 66,67.
66,67 * 3 = 200,01 :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester