Scarica solo le stored procedure in MySQL


31

Devo scaricare solo le procedure memorizzate: nessun dato, nessuna creazione di tabelle. Come posso fare questo usando mysqldump?


1
+1 per questa domanda perché ci sono molti sviluppatori nel mondo DB a cui piace catalogare le procedure memorizzate al di fuori di MySQL nel software di controllo versione che vorrebbe farlo (non sono un fan di farlo, me stesso)
RolandoMySQLDBA

Nel mio caso questo comando mi dà un errore mysqldump: Got error: 23: "Out of resources when opening file"Ho avuto la --single-transactionpossibilità di risolvere questo errore. E se vuoi solo la routine, puoi aggiungere - -no-create-infoper evitare l'istruzione create table.
bedomon,

Risposte:


34

Questo dovrebbe farlo per te:

mysqldump -h... -u... -p... -n -d -t --routines --triggers --all-databases > MySQLStoredProc.sql

  -n, --no-create-db     Suppress the CREATE DATABASE ... IF EXISTS statement 
                         that normally is output for each dumped database if
                         --all-databases or --databases is given.
  -d, --no-data          No row information.
  --triggers             Dump triggers for each dumped table.
                         (Defaults to on; use --skip-triggers to disable.)
  -R, --routines         Dump stored routines (functions and procedures).
  -t, --no-create-info   Do not write CREATE TABLE statements that create each 
                         dumped table.

AVVERTIMENTO

Sarebbe molto meglio non separare le procedure memorizzate dal database in modo che vengano create procedure memorizzate specifiche nel database per cui era destinata. Lo stesso vale per i trigger. Questo sarebbe preferibile:

mysqldump -h... -u... -p... -d --routines --triggers --all-databases > MySQLStoredProc.sql

9
Ho provato questo e ho dovuto aggiungere l'opzione '-t' per non ottenere le istruzioni create table.
Derek Downey,

Dimenticato quello, peccato che non posso votare i commenti. Ho aggiornato il primo comando mysqldump per includerlo. Il secondo dovrebbe essere lasciato fuori per associare ogni trigger alla sua tabella di base. Grazie ancora, @DTest !!!
RolandoMySQLDBA

Nessun problema. Nel mio caso, volevo solo funzioni / procedure memorizzate per un database specifico e non trigger. Quindi ha funzionato bene
Derek Downey il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.