是否有任何方法可以一次輕鬆創建多個MySQL數據庫上的存儲過程?所有的數據庫都在同一個MySQL安裝。在多個數據庫上安裝存儲過程
1
A
回答
0
我會建議做一個複製粘貼,並在每個數據庫模式中創建存儲過程,如果他們只需要該模式。否則,我會按照'Kelly Vista'的建議進行操作,只需引用位於其中一個架構中的存儲過程即可。
2
在所有模式
安裝要獲取模式列表,使用show databases;
。與-- use
結合本:
use schemaA;
-- use schemaB;
-- use schemaC;
create procedure ...
通過手動模式重複,刪除並取消註釋use
條款,當您移動時,檢查一切順利。在MySQL Workbench中,Ctrl + Shift + Enter是你的朋友。
模式中的一個子集安裝程序
通常你不想安裝存儲程序中所有架構的服務器上,但只有在子 ---常常被定義這套模式已經安裝了一些特定的存儲例程。然後,as discussed on SO,你可以使用這樣的查詢來獲得相關模式的名稱:
SELECT ROUTINE_SCHEMA FROM `information_schema`.`ROUTINES` where specific_name = 'MyRoutine';
驗證
部署程序後,以驗證他們的存在,你可以使用查詢像這樣:
SELECT distinct
r1.ROUTINE_SCHEMA,
case when r2.specific_name is not null then '' else '####' end as RoutineName1,
case when r3.specific_name is not null then '' else '####' end as RoutineName2,
case when r4.specific_name is not null then '' else '####' end as RoutineName3
FROM
`information_schema`.`ROUTINES` as r1
LEFT JOIN (select * from `information_schema`.`ROUTINES` where specific_name = 'RoutineName1') as r2 on r1.routine_schema = r2.routine_schema
LEFT JOIN (select * from `information_schema`.`ROUTINES` where specific_name = 'RoutineName2') as r3 on r1.routine_schema = r3.routine_schema
LEFT JOIN (select * from `information_schema`.`ROUTINES` where specific_name = 'RoutineName3') as r4 on r1.routine_schema = r4.routine_schema
where
r1.specific_name = 'FilteringRoutineName';
這個查詢將檢查是否RoutineName1
,RoutineName2
和RoutineName3
在服務器上的數據庫模式,因爲他們日常存在FilteringRoutineName
。如果缺少例程,將會標記爲####
。
當然,這只是檢查例行的存在。爲了驗證它們的實現,你可能需要一個數據庫比較工具(比如MySQL Compare或類似的工具)。
1
假設您正在使用Linux,帶有一組模式名稱的簡單BASH循環將允許您執行此操作。
將您的過程定義保存到一個文件(例如myproc.sql),然後在循環中將該文件用作mysql的輸入。如果您將登錄詳細信息放入〜/ .my.cnf中,則還可以避免在cmdline上放置用戶名和密碼。
for i in dbname1 dbname2 dbname3; do mysql ${i} < myproc.sql; done;
相關問題
- 1. 數據庫存儲過程
- 2. 如何在MySql數據庫中調用多個存儲過程
- 3. SQL存儲過程在多個表上
- 4. Mysql存儲過程 - 從多個數據庫表中獲取行
- 5. 如何從存儲過程動態使用多個數據庫
- 6. 多個數據庫的共享存儲過程
- 7. SQL存儲過程 - 從多個數據庫執行
- 8. 比較跨多個數據庫的存儲過程(SQL Server)
- 9. Django調用第二個數據庫上的存儲過程
- 10. 多個數據提供程序/ ORM上的存儲庫模式?
- 11. Cloudinary多個圖像上傳存儲在數據庫上
- 12. PHP Composer在遠程站點上安裝了空存儲庫
- 13. 數據庫交互的通用存儲庫或存儲過程?
- 14. 使用存儲過程在數據庫中存儲值
- 15. 在多個服務器上的多個數據庫上執行存儲過程SQL Server
- 16. SQL Server 2005安裝存儲過程
- 17. H2數據庫中的存儲過程
- 18. 存儲過程未更新數據庫
- 19. java - 存儲過程數據庫鏈接
- 20. 在數據庫目標上的NLog中使用存儲過程
- 21. 在Oracle數據庫上存儲.net過程
- 22. CodeIgniter與多個數據庫存儲在數據庫中
- 23. 在VB從一個存儲過程返回多個數據集
- 24. 存儲過程比使用LINQ對數據庫更安全嗎?
- 25. 如何使安全的sqlserver數據庫和存儲過程
- 26. 如何在一個數據庫中刪除多個存儲過程
- 27. 我可以在單個數據庫中創建多少個存儲過程?
- 28. 遠程安裝MySQL上的存儲過程
- 29. 服務代理 - 存儲過程從多個數據庫中檢索數據
- 30. .NET安裝程序來添加mysql數據庫表上安裝
當你說「多個數據庫」,你的意思是「多個模式」?您可以在任何模式中安裝單個存儲過程,並利用其他模式,假定該架構上的該用戶的權限尚未被撤銷。 – kvista 2011-01-21 01:00:52
我將我的常用過程保存在mysql模式中,並使用## call mysql.some_sp(); – shantanuo 2011-01-21 05:20:17