Stored-Procedures
DB2,如何將所有儲存過程保存為文件
如何從 DB2 模式中提取所有儲存過程作為單獨的文件(不使用 Data Studio,因此可以編寫腳本)。我需要它們,所以我可以上傳到原始碼管理。如果一個人可以訪問伺服器但沒有伺服器訪問權限,我已經找到了一種通過命令行執行此操作的方法。
您可以使用
db2look
帶有該選項的 clp 命令-e
,儘管它沒有僅導出過程的選項,因此除非它們位於沒有其他對象的模式中,否則您還將在輸出中混合獲得例如 TABLE、VIEW 和其他 DDL。$ db2look -d BP -e -cor -nofed -z PAUL | grep -A 999 'DDL Statements for Stored Procedures' -- DDL Statements for Stored Procedures --------------------------------- SET SYSIBM.NLS_STRING_UNITS = 'SYSTEM'; SET CURRENT SCHEMA = "PAUL "; SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","PAUL"; CREATE OR REPLACE PROCEDURE P () BEGIN RETURN /* this */ 2 ; -- comment /* this is a comment */ END ; ------------------------------- -- DDL Statements for Triggers ------------------------------- SET SYSIBM.NLS_STRING_UNITS = 'SYSTEM'; ...
從中導出 TEXT 列
SYSCAT.PROCEDURES
是另一種方法。由於該列是 CLOB,您可能希望使用允許導出超過 32K 的值的 clp 功能
-- -- Simple method to overcome the 32K column limit on CLP output -- -- The example below will export the TEXT columns of the SYSCAT.VIEWS for a single row into a text file in the current directory called syscat.views.txt.001 -- -- This capability of the clp is documented here https://docs-db2.mybluemix.net/docs/content/SSEPGG_11.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0002135.html -- -- run from the Db2 CLP as follows --- -- db2 +c -td@ -f export_clobs.db2 DECLARE C0 CURSOR FOR SELECT TEXT FROM SYSCAT.VIEWS WHERE VIEWSCHEMA = 'SYSCAT' AND VIEWNAME = 'TABLES' WITH UR @ OPEN C0 @ FETCH FROM C0 LOB COLUMN ALL INTO syscat.tables.txt OVERWRITE @ CLOSE C0 @ COMMIT @
順便說一句,如果創建每個 SP 時這些不是預設值,您可能還想導出 CURRENT PATH、CURRENT SCHEMA 和 NLS_STRING_UNITS。