Как написать хранимые процедуры для разделения файлов с MySQL? - PullRequest
2 голосов
/ 27 апреля 2010

Параметр mysqldump --tab=path записывает сценарий создания каждой таблицы в отдельный файл. Но я не могу найти хранимые процедуры, кроме как на снимке экрана.

Мне нужно хранить хранимые процедуры также в отдельных файлах.

Текущее решение, над которым я работаю, заключается в программном разделении дампа экрана. Есть ли более простой способ?

Код, который я использую до сих пор:

#save all routines to a single file
mysqldump -p$PASSWORD --routines --skip-dump-date --no-create-info --no-data --skip-opt $DATABASE > $BACKUP_PATH/$DATABASE.sql
#save each table to its file
mysqldump -p$PASSWORD --tab=$BACKUP_PATH --skip-dump-date --no-data --skip-opt $DATABASE

Даже если я добавлю --routines ко второй команде, они не получат свои собственные файлы.

Ответы [ 4 ]

3 голосов
/ 01 июля 2016

Я создал скрипт для вывода в отдельный файл.

https://gist.github.com/temmings/c6599ff6a04738185596

пример: mysqldump ${DATABASE} --routines --no-create-info --no-data --no-create-db --compact | ./seperate.pl

Файл выводится в каталог (out /).

$ tree . └── out ├── FUNCTION.EXAMPLE_FUNCTION.sql └── PROCEDURE.EXAMPLE_PROCEDURE.sql

1 голос
/ 06 мая 2010

Я думаю, что ответ: это невозможно без постобработки

0 голосов
/ 11 июня 2015

Команда mysqldump не поддерживает выгрузку хранимых процедур в отдельные файлы.

Но это можно сделать с помощью команды mysql.

mysql --skip-column-names --raw mydatabase -e "SELECT CONCAT('CREATE PROCEDURE `', specific_name, '`(', param_list, ') AS ') AS `stmt`, body_utf8 FROM `mysql`.`proc` WHERE `db` = 'mydatabase' AND specific_name = 'myprocedure';" 1> myprocedure.sql

Для более полного примера использования Windows Batch посмотрите мой ответ на другой вопрос. MySQL - mysqldump - подпрограммы для экспорта только 1 хранимой процедуры (по имени), а не каждой подпрограммы

0 голосов
/ 27 апреля 2011

Записывает определения таблиц (не SP) fwiw:

mysqldump -u<username> -p<password> -T<destination-directory> --lock-tables=0 <database>

Одна загвоздка, с которой я столкнулся, была: убедитесь, что у вас достаточно разрешений. Я только что сделал chmod 777 на нем.

Примечание: MySQL запишет структуры таблиц в файлы .sql, а данные - в файлы .txt. Я бы хотел, чтобы это было нормально, спасибо.

...