MySQL에서 저장 프로 시저 만 덤프


31

저장 프로 시저 만 덤프하면됩니다. 데이터가없고 테이블이 없습니다. mysqldump를 사용하여 어떻게 할 수 있습니까?


1
이 질문에 대한 +1 DB의 세계에서 많은 개발자들이 (내가 그렇게 자신하고의 팬이 아니에요) 버전 제어 소프트웨어에서 외부의 MySQL의 카탈로그 저장 프로 시저처럼이이 작업을 수행하고 싶다고 있기 때문에
RolandoMySQLDBA

제 경우에는이 명령으로 오류가 발생합니다.이 오류를 해결할 수 mysqldump: Got error: 23: "Out of resources when opening file"있는 --single-transaction옵션이 있습니다. 그리고 루틴 만 원한다면 -no-create-infocreate table 문을 피하기 위해 추가 할 수 있습니다 .
bedomon

답변:


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

문제 없어. 필자의 경우 방금 특정 데이터베이스에 대해 저장된 함수 / 프로 시저를 원했지만 트리거하지 않았습니다. 그래서 잘 작동
데릭 다우니
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.