Вивантажте лише збережені процедури в MySQL


31

Мені потрібно скинути лише збережені процедури: немає даних, не створюється таблиця. Як це зробити за допомогою mysqldump?


1
+1 для цього питання, оскільки є багато розробників у світі DB, яким подобається каталогізація збережених процедур за межами MySQL в програмному забезпеченні для управління версіями, який хотів би це зробити (сам я не прихильник цього робити)
RolandoMySQLDBA

У моєму випадку ця команда дасть мені помилку, mysqldump: Got error: 23: "Out of resources when opening file"я мав --single-transactionможливість вирішити цю помилку. І якщо ви хочете лише рутини, можете додати - -no-create-infoщоб уникнути створення таблиці оператора.
бедомон

Відповіді:


34

Це слід зробити для вас:

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.

КАВАТИ

Було б набагато краще не відокремлювати збережені процедури від бази даних, так що конкретні збережені процедури будуть створені в базі даних, для якої він був призначений. Те саме стосується і пускових механізмів. Це було б бажано:

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

9
Я спробував це, і мені довелося додати параметр '-t', щоб не отримати операторів створення таблиці.
Дерек Дауні

Забув це, теж погано, що я не можу оскаржити коментарі. Я оновив першу команду mysqldump, щоб включити її. Другий слід залишити, щоб пов'язати кожен тригер зі своєю базовою таблицею. Ще раз дякую, @DTest !!!
RolandoMySQLDBA

Без проблем. У моєму випадку я просто хотів зберегти функції / процедури для певної бази даних, а не тригери. Так вийшло добре
Дерек Дауні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.