Yalnızca MySQL'de Saklı İşlemleri Dökmek


31

Sadece saklı yordamları boşa harcamam gerekiyor: veri yok, tablo yok. Bunu mysqldump kullanarak nasıl yapabilirim?


1
Bu soru için +1 çünkü DB dünyasında MySQL'in dışında depolanan prosedürleri, bunu yapmak isteyen sürüm kontrol yazılımında kataloglamak gibi pek çok geliştirici var. (
RolandoMySQLDBA

Benim durumumda bu komut bana bir hata verdi Bu hatayı çözme seçeneğim mysqldump: Got error: 23: "Out of resources when opening file"vardı --single-transaction. Ve sadece rutini istiyorsan, -no-create-infotabloyu ekle deyimini önlemek için - ekleyebilirsiniz .
bedomon

Yanıtlar:


34

Bu sizin için yapmalı:

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.

UYARI

Saklı yordamları veritabanından ayırmamak çok daha iyi olurdu, böylece amaçlanan veritabanında belirli saklı yordamlar oluşturulacak. Aynı şey tetikleyiciler için de geçerli. Bu tercih edilirdi:

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

9
Bunu denedim ve create table deyimlerini alamamak için '-t' seçeneğini eklemek zorunda kaldım.
Derek Downey,

Bunu unuttum, çok kötü yorum yapamam. Bunu eklemek için ilk mysqldump komutunu güncelleştirdim. İkincisi, her tetikleyiciyi taban masasına bağlamak için bırakılmalıdır. Tekrar teşekkürler, @DTest !!!
RolandoMySQLDBA

Sorun değil. Benim durumumda, sadece belirli bir veritabanı için saklı fonksiyonlar / prosedürler istedim, tetikleyicileri istemedim. Böylece iyi çalıştı
Derek Downey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.