Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* rinominare in batch più tabelle con phpMyAdmin
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 04 Mar 2007 19:41    Oggetto: * rinominare in batch più tabelle con phpMyAdmin Rispondi citando

Ho visto che con phpMyAdmin è possibile rinominare una tabella di un databse MySQL,

selezionando una tabella e poi (in cima alla schermata) Operazioni -> Sposta la tabella nel (database.tabella)
lasciandoovviamente lo stesso database (a meno che non si volgiacambiare anche quello, ovviamente).

Ora, nel caso in cui un amico di un amico di un amico di un mio amico Wink abbia creato (installando un programma) una serie di tabelle dal nome

prefissoA_nome1
prefissoA_nome2
prefissoA_nome3
prefissoA_nome2
eccetera

mentre invece avrebbe dovuto chiamarla
prefissoB_nome1
prefissoB_nome2
prefissoB_nome3
prefissoB_nome2
eccetera

(cioè con una diverso prefisso, uguale per tutte le tabelle. In questo caso è la parte terminale del prefisso ad essere sbagliato)

Siccome le teabelle sono una 30-ina, esiste un metodo per rimonirarle "in batch" , cioè in un colpo solo?

Con phpMyAdmin (tenente conto che lo conosco poco)
oppure al prompt di MySQL (tenete conto che lo conosco ancora meno, ma essendo abituato ai tempi del DOS, la riga di comando non mi spaventa, pur di avere chiare istruzioni)
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 12:14
Messaggi: 2898

MessaggioInviato: 04 Mar 2007 21:51    Oggetto: Rispondi citando

Se non ricordo male nell'interfaccia di PhpmyAdmin c'è la possibilita' di aprire il pannello SQL, per eseguire un comando..


da li puoi dare:

RENAME TABLE nome_tabella TO nuovo_nome
[, nome_tabella2 TO nuovo_nome2] ...


es.

RENAME TABLE prefissoA_nome1 TO prefissoB_nome1, prefissoA_nome2 TO prefissoB_nome2,prefissoA_nome3 TO prefissoB_nome3, [etc]
Top
Profilo Invia messaggio privato
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 04 Mar 2007 22:26    Oggetto: Rispondi citando

Uhm, non è molto più veloce.

un comando tipo quello che si arebbe dato in DOS
RENAME TABLE prefissoA_* TO prefissoB_*
non esiste?
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 12:14
Messaggi: 2898

MessaggioInviato: 04 Mar 2007 22:36    Oggetto: Rispondi citando

Non credo che esista, puoi provare, al massimo ti dira' che è impossibile trovare la tabella [consiglio cmq di stare attenti se hai gia' dei dati nella tabella]
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 05 Mar 2007 15:09    Oggetto: Rispondi citando

Non esiste, il comando per rinominare più tabelle insieme è:
Codice:
RENAME TABLE tbl_name TO new_tbl_name
    [, tbl_name2 TO new_tbl_name2] ...

Dal manuale mysql.

Dalla versione 5 di mysql c'è l'information_schema che fondamentalmente contiene una serie di viste tra cui tables che contiene l'elenco delle tabelle. Facendo una query su quella vista potresti crearti lo script per il rename tipo:
Codice:
select concat('rename',table_name,' to ',replace(table_name,'prefissoA_', 'prefissoB_'),';') from information_schema.tables where table_schema='tuodb' and table_name like 'prefissoA_%';

Al momento non ho però un db a disposizione per fare le prove quindi la sintassi potrebbe non essere perfetta.
Top
Profilo Invia messaggio privato
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 05 Mar 2007 15:30    Oggetto: Rispondi citando

ehm ... va oltre alle conoscenze e alle capacità mie, anzi dell'amico di un amico di un amico di un mio amico Wink

Farò a manina.
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 12:14
Messaggi: 2898

MessaggioInviato: 05 Mar 2007 15:48    Oggetto: Rispondi citando

scusami ma a manina non ti puoi fare semplicemente

RENAME TABLE [NOMEA1] TO [NOMEB1],
[NOMEA2] TO [NOMEB2],
[NOMEA3] TO [NOME3],
[NOMEA4] TO [NOME4],
[NOMEA5] TO [NOME5],
etc etc etc ,
[NOMEA30] TO [NOMEB30];

a manina ci metti 1 minuto
Top
Profilo Invia messaggio privato
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 05 Mar 2007 15:54    Oggetto: Rispondi citando

Appunto ....

Ero più che altro curioso se ci fosse un modo per fare tutti assieme (strano non ci sia)

così posso sì fare tutti assieme ma devo scrivere la trentina di nomi a manina, ma è fattibile, grazie dei consigli e delle spiegaizoni.
Top
Profilo Invia messaggio privato
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 07 Mar 2007 15:52    Oggetto: Rispondi citando

Fatto!

Tra l'altro mi è funzionato con questo metodto scrivendo "a manina" laquery per frinominare (1 o più ) tabelle

che con l'apposita fuznione per rinominare (nella pagina a cui si accede cliccando sulla "liguetta" Operazioni in alto mentre si visualizza una tabella) . Se faccio "Sposta la tabella nel (database.tabella):" mi spernaccia un errore
"Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request."

La rinominazione la fa lo stesso, ma per me novellino quel mesaggio d'errore non tranquillizza certo ...
Avessi dovuto vederlo uan trentina di volte, poi ....
Top
Profilo Invia messaggio privato
sowdust
Eroe
Eroe


Registrato: 12/03/06 13:35
Messaggi: 51
Residenza: Alessandria

MessaggioInviato: 03 Apr 2007 09:28    Oggetto: Rispondi citando

ciao!
scusa, ma penso che il programma che usa queste tabelle abbia il prefisso memorizzato in una variabile.
Non sarebbe più semplice modificarne il valore?
Es
se $prefix vale PREFISSO_A
Tu modifichi
$prefix=PREFISSO_B;
Top
Profilo Invia messaggio privato HomePage MSN
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 03 Apr 2007 09:56    Oggetto: Rispondi citando

sowdust ha scritto:
scusa, ma penso che il programma che usa queste tabelle abbia il prefisso memorizzato in una variabile.
Non sarebbe più semplice modificarne il valore?
Infatti era così.

Solo che quello che c'era l'avevo sbagliato a scrivere,
e volevo correggere proprio quello.

Pensando: tanto basterà fare una cosa tipo
REN papperino_* paperino_*
stile DOS
oppure selezionare tutte le tabelle e poi Operazioni -> sposta tabella

Invece pare non sia previsto ... (ci riproverò).


p.s.: grazie comunque del consiglio -in teoria- corretto e sensato.
Potrebbe essere utili ad altri.
Top
Profilo Invia messaggio privato
sowdust
Eroe
Eroe


Registrato: 12/03/06 13:35
Messaggi: 51
Residenza: Alessandria

MessaggioInviato: 03 Apr 2007 10:21    Oggetto: Rispondi citando

no aspetta non mi sono spiegato bene.
Anche adesso che hai creato le tabelle, comunque il prefisso sarà memorizzato.
Ad esempio, in tutte le pagine ci sarà un file tipo varibili.php che all'interno ha:

$prefisso=PREFISSOA.

e poi l'operazione sarà
$query="select * from $prefisso.nometabella";

quindi basta cambiare la variabile $prefisso e non ti servirà cambiare tutte le altre! (spero di essere stato più chiaro stavolta Smile )
Top
Profilo Invia messaggio privato HomePage MSN
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 03 Apr 2007 10:58    Oggetto: Rispondi citando

Sì, io ho modificato il nome di tutte le tabelle
(in modo che avessero il prefisso corretto)

e poi ho modificato il programma (in php , che non ho fato io. E' un CMS open source), o melgio il file di configurazione in php, in un unico punto, modificando il valore assegnato a quella variabile.
Top
Profilo Invia messaggio privato
sowdust
Eroe
Eroe


Registrato: 12/03/06 13:35
Messaggi: 51
Residenza: Alessandria

MessaggioInviato: 03 Apr 2007 11:19    Oggetto: Rispondi citando

Citazione:
e poi ho modificato il programma (in php , che non ho fato io. E' un CMS open source), o melgio il file di configurazione in php, in un unico punto, modificando il valore assegnato a quella variabile.

Quello che immaginavo!
Ma, scusa se insisto, facendo quello non era più necessario fare questo:
Citazione:
Sì, io ho modificato il nome di tutte le tabelle
(in modo che avessero il prefisso corretto)
Top
Profilo Invia messaggio privato HomePage MSN
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 03 Apr 2007 12:14    Oggetto: Rispondi citando

Vedo di chiarire meglio.

(nota -che forse si capisce melgio- : Il tutto funzionava anche prima. Aveva solo il nome sbagliato)

prima:

valore variabile prefisso =SBAGLIATO
(impostata dal programma s'installazione, visto che io gli ho messo dentro SBAGLIATO)

nomi delle tabelle = SBAGLIATO_*
(create dal programma d'installazione)


poi:

valore variabile prefisso =GIUSTO
(cambiato editandoil file di configurzione $prefisso=.... )

nomi delle tabelle = GIUSTO_*
(cambiati come indicato nella discussione)


p.s.: diciamolo ai 4 venti,
ora tutto il mondo da che ho *sbalgiato* ! Confused
Very Happy
Top
Profilo Invia messaggio privato
sowdust
Eroe
Eroe


Registrato: 12/03/06 13:35
Messaggi: 51
Residenza: Alessandria

MessaggioInviato: 03 Apr 2007 17:32    Oggetto: Rispondi

ah!
allora sono io ad essere tardo, scusami!
Ora ho capito!
Top
Profilo Invia messaggio privato HomePage MSN
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi