SQL資料管理活動可讓您編寫自己的SQL指令碼以建立和填充工作表。
在設定活動之前,請確定已符合下列先決條件:
指定活動Label。
選擇要使用的External account,然後選擇連結到此外部帳戶的Outbound schema。
出站方案已修正,無法編輯。
添加SQL指令碼。
SQL指令碼編寫者有責任確保SQL指令碼正常工作,並確保其引用(欄位名稱等) 符合「出站」模式。
如果要載入現有的SQL代碼,請選擇The SQL script is contained in an entity stored in the database選項。 SQL指令碼必須建立並儲存在Administration / Configuration / SQL scripts菜單中。
否則,在專用區域鍵入或複製貼上SQL指令碼。
此活動可讓您在指令碼中使用下列變數:
activity.tableName:出站工作表的SQL名稱。
task.incomingTransitionByName(『name』)。tableName:要使用的傳入轉換所攜帶的工作表的SQL名稱(轉換由其名稱標識)。
('name')值與轉場屬性的Name欄位相對應。
如果SQL指令碼已包含建立出站工作表的命令,請取消選擇Automatically create work table選項。 否則,工作表將在工作流執行後自動建立。
按一下Ok確認活動配置。
活動現在已設定。 它已準備好在工作流中執行。
執行活動後,出站轉移記錄計數僅表示。 它可能隨SQL指令碼的複雜程度而變化。
如果活動重新啟動,則無論其執行狀態如何,都會從開始執行整個指令碼。
本節中的指令碼示例應在PostgreSQL下執行。
以下指令碼可讓您建立工作表,並將資料插入此相同的工作表:
CREATE UNLOGGED TABLE <%= activity.tableName %> (
iRecipientId INTEGER DEFAULT 0,
sFirstName VARCHAR(100),
sMiddleName VARCHAR(100),
sLastName VARCHAR(100),
sEmail VARCHAR(100)
);
INSERT INTO <%= activity.tableName %>
SELECT iRecipientId, sFirstName, sMiddleName, sLastName, sEmail
FROM nmsRecipient
GROUP BY iRecipientId, sFirstName, sMiddleName, sLastName, sEmail;
以下指令碼可讓您執行CTAS操作(CREATE TABLE AS SELECT)並建立工作表索引:
CREATE TABLE <%= activity.tableName %>
AS SELECT iRecipientId, sEmail, sFirstName, sLastName, sMiddleName
FROM nmsRecipient
WHERE sEmail IS NOT NULL
GROUP BY iRecipientId, sEmail, sFirstName, sLastName, sMiddleName;
CREATE INDEX ON <%= activity.tableName %> (sEmail);
ANALYZE <%= activity.tableName %> (sEmail);
以下指令碼可讓您合併兩個工作表:
CREATE TABLE <%= activity.tableName %>
AS SELECT i1.sFirstName, i1.sLastName, i2.sEmail
FROM <%= task.incomingTransitionByName('input1').tableName %> i1
JOIN <%= task.incomingTransitionByName('input2').tableName %> i2 ON (i1.id = i2.id)