Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Mysq] Estrapolare stored procedure

    ciao a tutti!

    avrei la necessità di salvare tutte le stored procedure su file (sul server).
    ogni SP dovrebbe avere un file con il proprio nome.
    io avevo pensato di crearmi un programmino che esegue una query, e per ogni record salva il file sul server, mettendo dentro il contenuto della SP.

    a prescindere dal linguaggio, che non è importante, il problema è che andando nella tabella proc del db mysql non vedo il contenuto delle SP.
    vedo altre informazioni (db, name, type, ecc).
    ma non il contenuto.
    dove lo vado a pescare?

  2. #2
    Utente di HTML.it L'avatar di Nazareno
    Registrato dal
    Mar 2001
    residenza
    Udine
    Messaggi
    176
    Ciao. E usare un tool già pronto?
    Poi apri il file generato e togli quello che non ti interessa.

    http://www.ducea.com/2007/07/25/dump...-and-triggers/

  3. #3
    Utente di HTML.it L'avatar di Nazareno
    Registrato dal
    Mar 2001
    residenza
    Udine
    Messaggi
    176
    Qui la documentazione completa. Puoi skippare tabelle, trigger, ecc... e lasciare solo le routine

    https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

  4. #4
    ciao!

    però questo copia tutto in unico file sql se non erro, giusto?
    se è così, quello ce l'ho già (faccio backup di tutto il db ogni sera).
    a me in verità servirebbe una file a stored procedure (senza andare a fare copia / incolla da quello generale)!!

  5. #5
    Utente di HTML.it L'avatar di Nazareno
    Registrato dal
    Mar 2001
    residenza
    Udine
    Messaggi
    176
    Mah, allora segui la tua prima strada, cioè leggi dalla tabella mysql.proc. I parametri sono nella colonna param_list, il body in body_utf8, ma sono campi BLOB (binari) per cui devi usare CONVERT e convertirli in stringa.
    Una cosa del genere:

    select CONCAT('CREATE PROCEDURE ', name , '(' ,CONVERT(param_list USING utf8),') ', CONVERT(body_utf8 USING utf8)) as myproc
    from mysql.proc
    where db='sakila'
    and type='PROCEDURE'

    Puoi eseguire da linea di comando facendo un batch che genera un file per ogni stored procedure.
    Cerca su Google

  6. #6
    Quote Originariamente inviata da Nazareno Visualizza il messaggio
    Mah, allora segui la tua prima strada, cioè leggi dalla tabella mysql.proc. I parametri sono nella colonna param_list, il body in body_utf8, ma sono campi BLOB (binari) per cui devi usare CONVERT e convertirli in stringa.
    Una cosa del genere:

    select CONCAT('CREATE PROCEDURE ', name , '(' ,CONVERT(param_list USING utf8),') ', CONVERT(body_utf8 USING utf8)) as myproc
    from mysql.proc
    where db='sakila'
    and type='PROCEDURE'

    Puoi eseguire da linea di comando facendo un batch che genera un file per ogni stored procedure.
    Cerca su Google
    ah ok, era questo che non sapevo!
    non capivo da dove prendere il testo perchè non sapevo questa cosa.
    adesso provo a fare come dici tu e ti faccio sapere!

  7. #7
    ok, alla tua query ho aggiunto name da solo per prendere il nome (per creare il file sql con lo stesso nome in sostanza) ed ho fatto.
    mi sono salvato tutte le SP.
    codice:
    select name, CONCAT('CREATE PROCEDURE ', name , '(' ,CONVERT(param_list USING utf8),') ',
    .............................
    grazie mille per l'aiuto, mi hai salvato un sacco di tempo!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.