Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    [MySql] Duplicare tabella con nome diverso

    Ciao ragazzi,
    come da titolo avrei la necessita di duplicare una tabella ma di darle un mome diverso.
    Ovviamente vorrei evitare un classico replace nel file sql. Esiste qualche funzione sql che permette di fare una cosa del genere?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2

    Re: [MySql] Duplicare tabella con nome diverso

    Originariamente inviato da ciro78
    Ciao ragazzi,
    come da titolo avrei la necessita di duplicare una tabella ma di darle un mome diverso.
    Ovviamente vorrei evitare un classico replace nel file sql. Esiste qualche funzione sql che permette di fare una cosa del genere?
    chissa' se ho capito bene:

    codice:
    create table nuova
    select *
    from vecchia
    poi devi solo creare gli indici.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ciao piero,
    grazie per la risposta. ma in questo modo sono costretto a farne una per volta. siccome debbo duplicarne 84 x 4 volte cercavo una soluzione più rapida
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da ciro78
    ciao piero,
    grazie per la risposta. ma in questo modo sono costretto a farne una per volta. siccome debbo duplicarne 84 x 4 volte cercavo una soluzione più rapida
    Allora ti serve una stored procedure.
    Il risultato che cerchi è quello dell'esempio di Piero? Devi cioè copiare anche il contenuto o devi solo ricreare la struttura?

    Le tabelle nuove è sufficiente che abbiano lo stesso nome più un suffisso numerico rispetto al nome originale?

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    si il risultato è ovviamente quello di piero. dati e struttura

    più che suffisso dovrebbe essere una cosa del genere

    db1_tab1 -> db2_tab1
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ma quindi queste tabelle devono essere create in un db diverso da quello che contiene le tabelle da copiare?

  7. #7
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ehm no in quel caso copiavo il database

    db1 è il prefisso della tabella. l'ho messo io a caso per intendere che quello che deve cambiare nella nomenclatura è appunto il prefisso. poteva essere anche pippo1 e pippo2
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da ciro78
    ehm no in quel caso copiavo il database

    db1 è il prefisso della tabella. l'ho messo io a caso per intendere che quello che deve cambiare nella nomenclatura è appunto il prefisso. poteva essere anche pippo1 e pippo2
    Ok, ti faccio ancora un paio di domande e poi vedo di aiutarti a trovare la soluzione.
    Le 84 tabelle che devi copiare è l'esatto numero che compongono il db?
    Te lo chiedo per sapere se è possibile interrogare l'information_schema limitandoci a recuperarle tutte o se sono delle tabelle specifiche che andrebbero quindi esplicitate in fase di query.

    Ultima domanda: una volta recuperate le tabelle si procede alla creazione delle copie (4 per ciascuna tabella se ho capito bene).

    Se la prima tabella si chiama db1_tab1 come devo rinominare le 4 copie, db2_tab1,db3_tab1,db4_tab1 e db5_tab1 e idem per tutte le altre 83?

  9. #9
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    il numero esatto è 81

    si, il sistema che hai usato va bene per rinominarle
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    delimiter //
    drop procedure if exists copia_tabelle //
    create procedure copia_tabelle()
    begin
    declare finito int default 0; 
    declare i int;
    declare str varchar(200);
    declare qry varchar(1000);
    declare cur_tabelle cursor for select table_name from information_schema.tables where table_schema = database() and table_type = 'base table';
    declare  continue handler for not found set finito = 1;
    open cur_tabelle;
    mio_loop:loop
    fetch cur_tabelle into str;
    if finito = 1 then
    leave mio_loop;
    end if;
    set i = 2;
    while i<=5 do
    set @qry = concat("create table db",i,"_",str," select * from ", str);
    prepare stmt from @qry;
    execute stmt;
    deallocate prepare stmt;
    set i = i + 1;
    end while;
    end loop;
    close cur_tabelle;
    end //
    delimiter ;
    
    call copia_tabelle()
    Fai i tuoi test su una copia del db.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.