MySQL端口可以從MySQL數(shù)據(jù)庫(kù)中存儲(chǔ)和檢索數(shù)據(jù)。
概覽
建立連接后,端口讀取數(shù)據(jù)庫(kù)中存在的表/視圖(table/view)列表。通過(guò)選擇一個(gè)可用的表并從該表中選擇列來(lái)創(chuàng)建輸入或輸出映射。端口使用選定的表和列生成一個(gè)XML架構(gòu)結(jié)構(gòu)。
生成輸入映射后,當(dāng)端口接收到與輸入映射的XML結(jié)構(gòu)匹配的XML文件時(shí),它將自動(dòng)將數(shù)據(jù)插入數(shù)據(jù)庫(kù)。生成輸出映射后,端口將從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),并使用提取的值填充與輸出映射具有相同的XML結(jié)構(gòu)的XML文件。
端口配置
本節(jié)包含所有可配置的端口屬性。
配置
數(shù)據(jù)庫(kù)連接
與建立數(shù)據(jù)庫(kù)連接相關(guān)的設(shè)置。
設(shè)置格式 | 將連接設(shè)置指定為屬性列表或連接字符串。 |
連接字符串 | 連接字符串格式的數(shù)據(jù)庫(kù)憑據(jù)。僅在設(shè)置格式為“連接字符串”時(shí)適用,并用于替代其他連接字段。 |
服務(wù)器 | 托管數(shù)據(jù)庫(kù)的服務(wù)器的主機(jī)名或IP地址。 |
端口 | 要連接到數(shù)據(jù)庫(kù)主機(jī)的端口。 |
數(shù)據(jù)庫(kù) | 要連接到的數(shù)據(jù)庫(kù)的名稱。 |
用戶 | 有權(quán)訪問(wèn)數(shù)據(jù)庫(kù)的用戶憑據(jù)。 |
密碼 | 與指定用戶關(guān)聯(lián)的密碼憑據(jù)。 |
映射
在數(shù)據(jù)庫(kù)表和XML文檔結(jié)構(gòu)之間建立映射關(guān)系。一旦創(chuàng)建了這些映射,就可以將XML數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中,并且可以將從數(shù)據(jù)庫(kù)中檢索到的數(shù)據(jù)作為XML推出。
輸入映射 | 輸入映射在XML文檔結(jié)構(gòu)和數(shù)據(jù)庫(kù)插入(或更新)之間創(chuàng)建關(guān)系。當(dāng)匹配輸入映射結(jié)構(gòu)的XML文件到達(dá)MySQL端口時(shí),端口使用輸入文件中的值對(duì)數(shù)據(jù)庫(kù)進(jìn)行插入/更新調(diào)用。有關(guān)生成輸入映射的更多信息,請(qǐng)參見(jiàn)輸入映射部分。 |
輸出映射 | 輸出映射在XML文檔結(jié)構(gòu)和數(shù)據(jù)庫(kù)選擇語(yǔ)句之間創(chuàng)建一種關(guān)系。當(dāng)端口從數(shù)據(jù)庫(kù)接收數(shù)據(jù)時(shí),它用與輸出映射相同的XML結(jié)構(gòu)填充一個(gè)XML文件。然后,該XML文件被推送到工作流中的下一個(gè)端口。有關(guān)生成輸出映射的更多信息,請(qǐng)參見(jiàn)輸出映射部分。 |
自動(dòng)化
自動(dòng)化配置
與端口自動(dòng)處理文件相關(guān)的設(shè)置。
發(fā)送 | 匹配輸入映射的XML文件是否會(huì)自動(dòng)插入數(shù)據(jù)庫(kù)。 |
重試間隔(分) | 端口在重試失敗的發(fā)送之前等待的時(shí)間間隔。 |
最大重試次數(shù) | 端口在引發(fā)錯(cuò)誤之前發(fā)送消息的嘗試次數(shù)。 |
接收 | 是否應(yīng)該自動(dòng)從目標(biāo)數(shù)據(jù)庫(kù)中提取數(shù)據(jù)并用于生成與配置的輸出映射匹配的XML文件。 |
接收?qǐng)?zhí)行間隔 | 自動(dòng)嘗試從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)的間隔時(shí)間。 |
分鐘 | 下載前等待的分鐘數(shù)。僅在接收?qǐng)?zhí)行間隔設(shè)置為分鐘時(shí)適用。 |
時(shí)間過(guò)了幾分鐘 | 每小時(shí)計(jì)劃的分鐘偏移量,僅在接收?qǐng)?zhí)行間隔設(shè)置為每小時(shí)時(shí)適用。例如,如果該值設(shè)置為5,自動(dòng)化服務(wù)將在1:05、2:05、3:05等處啟動(dòng)。 |
時(shí)間 | 給定日期內(nèi)下載發(fā)生的時(shí)間。僅當(dāng)“接收?qǐng)?zhí)行間隔”設(shè)置為“每日”、“每周”或“每月”時(shí)適用。 |
天 | 拉取請(qǐng)求應(yīng)該發(fā)生的日期,僅在接收?qǐng)?zhí)行間隔設(shè)置為每周或每月時(shí)適用。 |
表達(dá)式 | 表達(dá)式的任意字符串,用于確定拉請(qǐng)求應(yīng)該何時(shí)發(fā)生。僅在接收?qǐng)?zhí)行間隔設(shè)置為高級(jí)時(shí)適用。 |
高級(jí)配置
本地文件夾
輸入文件夾(Send) | 放在這里的文件將由端口發(fā)送。如果啟用了發(fā)送自動(dòng)化,端口將自動(dòng)輪詢此位置以進(jìn)行文件處理。 |
輸出文件夾(Receive) | 端口會(huì)將接收/下載的文件放在此文件夾中。如果端口連接到工作流中的另一個(gè)端口,文件將不會(huì)保留在這里,而是傳遞到已連接端口的輸入文件夾(Send)。 |
已處理文件夾(Sent) | 發(fā)送后,如果啟用了”已處理文件夾(Sent)”,端口將在此放置文件的副本,該文件的副本不會(huì)傳遞到工作流中的下一個(gè)端口。 |
防火墻配置
一組設(shè)置,用于標(biāo)識(shí)應(yīng)該通過(guò)其連接到數(shù)據(jù)庫(kù)的防火墻。
日志
與連接器日志記錄相關(guān)的設(shè)置。
日志文件 | 磁盤上寫入日志文件的路徑(包括文件名和擴(kuò)展名)。 |
最大日志文件大小 | 嘗試記錄超過(guò)最大大小的數(shù)據(jù)將導(dǎo)致創(chuàng)建另一個(gè)日志文件,并將當(dāng)前日期時(shí)間附加到文件名末尾。 |
詳細(xì)程度 | 日志文件中包含的詳細(xì)程度,從1到5,其中5是最詳細(xì)的。 |
方案
與數(shù)據(jù)庫(kù)架構(gòu)相關(guān)的設(shè)置。
位置 | 磁盤上包含定義表、視圖和存儲(chǔ)過(guò)程的架構(gòu)文件的目錄路徑。 |
表 | 將架構(gòu)報(bào)告的表限制為可用表的子集。例如:表A、表B、表C |
視圖 | 將架構(gòu)報(bào)告的視圖限制為可用視圖的子集。例如:視圖A、視圖B、視圖C |
SSH
通過(guò)SSH連接到數(shù)據(jù)庫(kù)主機(jī)的設(shè)置集合。僅當(dāng)數(shù)據(jù)庫(kù)主機(jī)需要SSH連接時(shí)才需要。
SSL
使用SSL客戶端身份驗(yàn)證連接到數(shù)據(jù)庫(kù)主機(jī)的設(shè)置集合。僅當(dāng)數(shù)據(jù)庫(kù)主機(jī)是需要SSL客戶端身份驗(yàn)證的SSL服務(wù)器時(shí)才需要。
性能
與端口分配資源有關(guān)的配置。
最大線程數(shù) | 從工作池分配的最大線程數(shù)以便處理此端口上的文件。 如果配置了,則覆蓋“個(gè)人配置->高級(jí)配置->性能”選項(xiàng)卡中的默認(rèn)配置。 |
最大文件數(shù) | 此端口分配的線程每次能處理的最大文件數(shù)。如果配置了,則覆蓋“個(gè)人配置->高級(jí)配置->性能”選項(xiàng)卡中的默認(rèn)配置。 |
其他配置
未包含在先前類別中的設(shè)置。
連接時(shí)長(zhǎng) | 數(shù)據(jù)庫(kù)連接保持打開(kāi)的持續(xù)時(shí)間。如果設(shè)置為0,則沒(méi)有限制。 |
集成安全性 | 是否使用窗口身份驗(yàn)證進(jìn)行身份驗(yàn)證。 |
最大行數(shù) | 在單個(gè)輪詢間隔內(nèi)從數(shù)據(jù)庫(kù)中提取的最大記錄數(shù)。 |
其他 | 隱藏屬性僅在特定用例中使用。 |
池空閑超時(shí) | 連接關(guān)閉前允許的空閑時(shí)間。 |
池最大大小 | 池中的最大連接數(shù)。 |
池最小大小 | 池中的最小連接數(shù)。 |
池等待時(shí)間 | 等待可用連接的最大秒數(shù)。 |
查詢傳遞 | 是將查詢按原樣傳遞給MySQL,還是執(zhí)行客戶端驗(yàn)證和語(yǔ)法更正。 |
只讀 | 是否強(qiáng)制對(duì)MySQL提供程序進(jìn)行只讀訪問(wèn)。 |
退貨目錄 | 當(dāng)設(shè)置為false時(shí),當(dāng)查詢getCatalogs、getSchemas、getTables、getViews、getProcedures、getColumns、getProcedures參數(shù)或getIndex時(shí),端口將返回空值。 |
SSL服務(wù)器證書 | 標(biāo)識(shí)托管數(shù)據(jù)庫(kù)的SSL服務(wù)器的公鑰證書。僅當(dāng)數(shù)據(jù)庫(kù)托管在SSL服務(wù)器上時(shí)才需要。如果公鑰證書不可用,此字段可以設(shè)置為“任何證書”,以隱式信任服務(wù)器的身份。 |
超時(shí) | 端口在引發(fā)超時(shí)錯(cuò)誤之前等待連接響應(yīng)的持續(xù)時(shí)間(秒)。 |
使用連接池 | 是否使用開(kāi)放連接池。 |
零日期到空日期 | 是否將包含全零的日期和日期時(shí)間值作為空值返回。 |
命令超時(shí) | 命令執(zhí)行超時(shí)持續(xù)時(shí)間(秒)。 |
平面映射方案 | 根據(jù)文檔的文件名控制將使用哪個(gè)輸入映射來(lái)處理傳入的平面文件。支持全局匹配,可以通過(guò)用分號(hào)分隔每個(gè)映射來(lái)定義多個(gè)映射。例如,將此字段設(shè)置為‘*INVOICE*=Invoice;*ORDER*=Order;’將導(dǎo)致端口使用發(fā)票輸入映射來(lái)處理文件名中帶有“INVOICE”的任何文件,并且名稱中帶有“ORDER”的任何其他文件將使用訂單輸入映射來(lái)處理。比較不區(qū)分大小寫。 |
本地文件方案 | 一種文件掩碼,用于確定端口下載的本地文件名。以下宏可用于引用上下文信息: %ConnectorId%, %Filename%, %FilenameNoExt%, %Ext%, %ShortDate%, %LongDate%, %RegexFilename:%, %DateFormat:%, %ControlNumber%, %TransactionControlNumber%, %TransactionCode%, %StandardVersion% 例如:%FilenameNoExt%_%ControlNumber%%Ext% |
日志消息 | 已處理文件的日志條目是否包含文件本身的副本。 |
保存到已發(fā)送(Sent)文件夾 | 端口處理的文件是否應(yīng)復(fù)制到端口的已發(fā)送(Sent)文件夾。 |
建立連接
與MySQL端口建立連接需要以下連接屬性:
1
2
3
4
5
6
7
8
9
10
|
服務(wù)器 端口 數(shù)據(jù)庫(kù) 用戶名 密碼 |
這些可以配置為單獨(dú)的屬性或數(shù)據(jù)庫(kù)連接字符串。
輸入映射
輸入映射表示對(duì)目標(biāo)數(shù)據(jù)庫(kù)中一個(gè)或多個(gè)表的插入/更新。它們是通過(guò)可視化映射編輯器面板創(chuàng)建的,然后在內(nèi)部建模為XML。端口處理的與輸入映射的XML結(jié)構(gòu)匹配的文件將自動(dòng)轉(zhuǎn)換為插入或更新查詢。
將XML轉(zhuǎn)換為數(shù)據(jù)庫(kù)查詢的過(guò)程在“輸入映射為XML”部分中有詳細(xì)說(shuō)明;從概念上講,端口只是簡(jiǎn)單地從XML元素中讀取值,并在進(jìn)行INSERT/UPDATE語(yǔ)句時(shí)使用它們。
創(chuàng)建輸入映射
單擊“添加映射”按鈕(+)創(chuàng)建新映射。從數(shù)據(jù)庫(kù)中的可用表列表中選擇目標(biāo)表/視圖,以調(diào)出映射編輯器面板。在映射編輯器中,選擇應(yīng)該包含在插入/更新中的表列。對(duì)于簡(jiǎn)單的INSERTs,這就是生成映射所需的全部。
創(chuàng)建輸入映射后,可以通過(guò)單擊映射名稱旁邊的“代碼”按鈕()來(lái)查看其XML表示。
UPSERT
UPSERT設(shè)置控制端口如何決定是插入還是更新。最常見(jiàn)的情況是將UPSERT設(shè)置為:表的主鍵。使用這種配置,端口將從輸入的XML中讀取主鍵值,查詢數(shù)據(jù)庫(kù)以查看該鍵是否已經(jīng)存在于表中,如果存在則更新記錄,如果不存在則插入新記錄。UPSERT by:可以設(shè)置為主鍵以外的列,但這可能會(huì)導(dǎo)致從數(shù)據(jù)庫(kù)返回多個(gè)記錄。在這種情況下,端口更新返回的第一條記錄。
如果執(zhí)行此查詢以選擇UPSERT鍵:設(shè)置為選擇查詢,端口將比較此查詢的結(jié)果和輸入的XML,以確定是插入還是UDPATE。例如,如果此字段設(shè)置為以下查詢:
SELECT CustomerName WHERE CustomerAddress = 101 Main Street
然后端口將首先對(duì)數(shù)據(jù)庫(kù)運(yùn)行這個(gè)查詢,然后在輸入的XML中查找CustomerName元素,最后將該XML值與數(shù)據(jù)庫(kù)返回的值進(jìn)行比較。如果這些值匹配,那么端口將更新該記錄,否則它將插入一個(gè)新記錄。
INSERT
如果在輸入映射中禁用UPSERT,端口將自動(dòng)將查詢操作設(shè)置為INSERT。端口將嘗試為每個(gè)輸入的XML文件插入新記錄,而無(wú)需查詢數(shù)據(jù)庫(kù)來(lái)查看該記錄是否已經(jīng)存在。
LOOKUP
有些列有LOOKUP選項(xiàng)可用。端口檢測(cè)到這些列與數(shù)據(jù)庫(kù)中的另一個(gè)表有外鍵關(guān)系。如果LOOKUP已啟用,端口將在插入前查詢?cè)撏獠勘?,并使用INSERT中返回的值。LOOKUP by:字段確定將使用哪一列來(lái)查詢外部表。
例如,假設(shè)將采購(gòu)訂單插入數(shù)據(jù)庫(kù),其中“采購(gòu)訂單”表中的一個(gè)字段是內(nèi)部客戶標(biāo)識(shí)。假設(shè)輸入的XML將有一個(gè)客戶名稱元素,但沒(méi)有客戶的內(nèi)部標(biāo)識(shí)。但是,數(shù)據(jù)庫(kù)中的另一個(gè)表“客戶”既有名稱又有標(biāo)識(shí),因此它可以用于根據(jù)名稱查找標(biāo)識(shí)值。端口將識(shí)別“采購(gòu)訂單”表的CustomerID列是外鍵,并為該列啟用LOOKUP。將LOOKUP by:設(shè)置為CustomerName將指示端口使用如下語(yǔ)句查詢“客戶”表:
SELECT CustomerID FROM Customers WHERE CustomerName = @CustomerName
在此查詢中,@CustomerName代表輸入XML中CustomerName元素中的值。
使用這種配置,端口將首先從“Customers”中檢索客戶標(biāo)識(shí),然后在插入“PO”表時(shí)使用該值。
作為XML的輸入映射
輸入映射用XML表示,結(jié)構(gòu)如下:父元素標(biāo)識(shí)要插入的表,每個(gè)子元素對(duì)應(yīng)于目標(biāo)表中的一列。輸入映射建立了XML元素和數(shù)據(jù)庫(kù)列之間的連接,以便端口可以從傳入的XML文檔中讀取值,并在插入或更新查詢中使用它們。
以下是“學(xué)生”表的輸入映射示例:
1
2
3
4
5
6
7
8
|
<Students action="insert"> <StudentID key="true" />
<Grade type="int"/>
|
在上例中,StudentID, Name, Grade和GPA是“Students”表的每一列。當(dāng)端口處理與該結(jié)構(gòu)匹配的一個(gè)XML文件時(shí),它會(huì)自動(dòng)將該XML中的值插入到“Students”表中。以下是用于上述映射的示例XML輸入文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
12554 Ferris Bueller 11 1.8
12921 Hermione Granger 9 4.0
|
當(dāng)端口處理上述輸入文件時(shí),它將在“學(xué)生”表中插入或更新兩條記錄,每個(gè)學(xué)生元素一條記錄。請(qǐng)注意,如果數(shù)據(jù)庫(kù)可以通過(guò)自動(dòng)增量自動(dòng)生成主鍵,則表的主鍵不需要包含在輸入的XML中。
插入子表
輸入映射支持使用單個(gè)映射插入多個(gè)表。當(dāng)創(chuàng)建具有多個(gè)表的輸入映射時(shí),這些表應(yīng)該彼此具有外鍵關(guān)系,這樣一個(gè)表就是另一個(gè)表的子表。否則,使用多個(gè)輸入映射插入到不通過(guò)外鍵相關(guān)的表中。
要插入子表,首先創(chuàng)建一個(gè)以父表為目標(biāo)的輸入映射。然后使用左上角的+添加按鈕從輸入映射編輯器中添加子表。從表列表中選擇適當(dāng)?shù)谋?,設(shè)計(jì)器將自動(dòng)填充表的層次結(jié)構(gòu)。選擇應(yīng)包含在輸入映射中的子表列。
REF
子表中的一些列將用藍(lán)色的“REF”標(biāo)記來(lái)標(biāo)記。端口檢測(cè)到這些列對(duì)應(yīng)于父表中的主鍵。在插入父表之后,在插入子表之前,端口將在父表中查詢它剛剛插入的記錄的主鍵。然后,端口將在插入子表時(shí)使用該值。
當(dāng)父表的主鍵由數(shù)據(jù)庫(kù)生成時(shí),如自動(dòng)增量鍵,這很有用。在這種情況下,該列不會(huì)作為輸入XML傳入,因此端口直到將記錄插入父表后才知道該列的值。
在輸入映射XML中,“引用”屬性表示以后可以引用某列,或者該列應(yīng)該包含由數(shù)據(jù)庫(kù)生成的具有保留值LAST_INSERT_ID的“引用”屬性(例如自動(dòng)增量主鍵):
1
2
|
<film action="upsert"> <film_id key="true" upsert="film_id" ref="@@LAST_INSERT_ID" /> |
1
2
3
4
5
|
這表示film_id值將在插入后被檢索,并可在映射中稍后被引用(通常在子表中)。若要稍后引用該值,請(qǐng)將“ref”元素設(shè)置為“自動(dòng)增量”列的名稱: <pre class="nums:true"> |
在上例中,film_id是父表中主鍵的名稱,也是子表中列的名稱。“ref”語(yǔ)法指示端口在插入后從父表中檢索film_id,并將檢索到的值用作子表中的film_id列。
LOOKUP
子表的LOOKUP邏輯與父表相同。有關(guān)更多詳細(xì)信息,請(qǐng)參見(jiàn)創(chuàng)建輸入映射中的查找部分。
子表XML
當(dāng)插入父表和子表時(shí),輸入映射XML結(jié)構(gòu)將是多層的。以下是由外鍵關(guān)聯(lián)的兩個(gè)表的輸入映射示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<film action="upsert"> <film_id key="true" upsert="film_id" ref="@@LAST_INSERT_ID" /> /><> /><> /><> <release_year type="date" /> /><>
<actor_id key="true" /> <film_id key="true" ref="@film_id" /> <last_update type="datetime" />
|
在上面的例子中,“film”是父表,“film_actor”是子表。film_id列是“film”表的主鍵,“film_actor”表中的外鍵。當(dāng)MySQL端口處理與此結(jié)構(gòu)匹配的輸入XML文件時(shí),它將更新“film”和“film_actor”表,并確保鏈接兩個(gè)記錄的鍵是相同的。
輸出映射表示來(lái)自目標(biāo)數(shù)據(jù)庫(kù)中一個(gè)或多個(gè)表的選擇查詢。它們是通過(guò)可視化映射編輯器面板創(chuàng)建的,然后在內(nèi)部建模為XML。從數(shù)據(jù)庫(kù)返回的結(jié)果用于填充與輸出映射結(jié)構(gòu)匹配的XML文檔。將數(shù)據(jù)庫(kù)響應(yīng)轉(zhuǎn)換為可擴(kuò)展標(biāo)記語(yǔ)言的過(guò)程在輸出映射為可擴(kuò)展標(biāo)記語(yǔ)言一節(jié)中有詳細(xì)介紹。
創(chuàng)建輸出映射
單擊“添加映射”按鈕(+)創(chuàng)建新映射。從數(shù)據(jù)庫(kù)中的可用表列表中選擇目標(biāo)表/視圖,以調(diào)出映射編輯器面板。在映射編輯器中,選擇應(yīng)該在select語(yǔ)句中返回的表列。對(duì)于簡(jiǎn)單的SELECT,這就是生成映射所需的全部?jī)?nèi)容。
創(chuàng)建輸入映射后,可以通過(guò)單擊映射名稱旁邊的“執(zhí)行”按鈕(黑色播放按鈕)來(lái)執(zhí)行它所代表的查詢。此外,可以通過(guò)單擊映射名稱旁邊的“代碼”按鈕()來(lái)查看映射的XML表示。
輸出過(guò)濾器
映射編輯器包括一個(gè)“過(guò)濾器”面板,用于定義限制數(shù)據(jù)庫(kù)返回記錄的規(guī)則。每個(gè)規(guī)則對(duì)應(yīng)于結(jié)果選擇查詢中的WHERE語(yǔ)句,并將指定列與指定值進(jìn)行比較;只會(huì)提取具有匹配列值的記錄。
規(guī)則與“AND ”和“OR”邏輯運(yùn)算符相結(jié)合,當(dāng)應(yīng)用許多規(guī)則時(shí),可以將規(guī)則分組在一起以保持操作順序。
輸出映射為XML
輸出映射用XML表示,結(jié)構(gòu)如下:父元素標(biāo)識(shí)要從中選擇的表,每個(gè)子元素對(duì)應(yīng)于目標(biāo)表中的一列。輸出映射建立了數(shù)據(jù)庫(kù)列和XML元素之間的連接,以便端口可以從數(shù)據(jù)庫(kù)結(jié)果中讀取值,并使用它們來(lái)填充XML文檔。
以下是“Students”表的輸出映射示例:
1
2
3
4
5
6
7
8
|
<Students selectQuery="SELECT * FROM `Students` WHERE `GPA` = 4.0"> <StudentID key="true" />
<Grade type="int"/>
|
在上例中,StudentID, Name, Grade和GPA是“Students”表的每一列。執(zhí)行輸出映射時(shí),端口將運(yùn)行指定的選擇查詢,并為返回的每個(gè)記錄生成一個(gè)XML文檔。以下是上述映射的示例XML輸出文件:
1
2
3
4
5
6
7
8
|
12921 Hermione Granger 9 4.0
|
批處理XML輸出
可以編輯輸出映射XML,以支持將記錄一起批處理到單個(gè)XML文檔中。在與數(shù)據(jù)庫(kù)表共享名稱的元素中,“batchResults”屬性可以設(shè)置為“true”。例如,在上面從“Students”表中選擇結(jié)果的輸出映射示例中,以下修改將確保結(jié)果是成批的:
1
2
3
4
5
6
7
8
|
<Students selectQuery="SELECT * FROM `Students` WHERE `GPA` = 4.0" batchResults="true"> <StudentID key="true" />
<Grade type="int"/>
|
請(qǐng)注意,如果在“SELECT”和“batchResults”啟用期間出現(xiàn)錯(cuò)誤,則可能很難確定哪些記錄由于錯(cuò)誤而未返回。
覆蓋SELECT查詢
輸出映射XML顯示將針對(duì)目標(biāo)數(shù)據(jù)庫(kù)運(yùn)行的SELECT查詢。端口基于輸出映射中的設(shè)置構(gòu)建該查詢,但是如果需要對(duì)查詢進(jìn)行細(xì)粒度控制,則可以手動(dòng)覆蓋該查詢。
只需編輯與數(shù)據(jù)庫(kù)表共享名稱的元素的“selectQuery”屬性,并將其設(shè)置為任意SELECT查詢。
僅處理新的或更改的記錄
輸出映射可以配置為僅檢索最近更新或添加的記錄。端口可以使用兩種方法來(lái)檢測(cè)哪些記錄是新的或修改的。
第一種方法需要一個(gè)DateTime列來(lái)表示記錄的最后修改時(shí)間,第二種方法需要一個(gè)列來(lái)顯式存儲(chǔ)一個(gè)值,該值表示是否應(yīng)該處理記錄。
使用最后修改的列
在映射編輯器中,展開(kāi)面板底部的高級(jí)設(shè)置。如果檢測(cè)到日期時(shí)間列,該選項(xiàng)將可用于使用列來(lái)處理新的或更改的記錄。將此設(shè)置為代表記錄上次修改時(shí)間的適當(dāng)日期時(shí)間列。
使用自定義列
輸出映射可以配置為更新表中成功從數(shù)據(jù)庫(kù)中提取的記錄的列。這可以與篩選器規(guī)則結(jié)合使用,該規(guī)則只選擇具有列值的記錄,該列值指示該記錄尚未被拉取(或應(yīng)該被再次拉取)。
要在處理后啟用列更新,請(qǐng)展開(kāi)映射編輯器底部的高級(jí)設(shè)置。成功處理行時(shí),啟用“用值更新列”,然后指定應(yīng)更新哪個(gè)列以及應(yīng)在該列中設(shè)置的值。
例如,輸出映射可能配置為在提取記錄后將已處理列更新為“1”。然后,可以應(yīng)用過(guò)濾規(guī)則,將記錄限制為僅處理不等于1的記錄。
在本例中,當(dāng)端口處理輸出模板時(shí),它會(huì)基于模板創(chuàng)建一個(gè)SELECT語(yǔ)句。模板將執(zhí)行“SELECT Id, AccountId, Amount FROM INVOICE”,根據(jù)模板為結(jié)果集中的每條記錄創(chuàng)建一個(gè)XML文件,并將這些文件放在該端口的輸出文件夾中。
從多個(gè)表中選擇
輸出映射支持使用單個(gè)映射查詢多個(gè)表。當(dāng)創(chuàng)建具有多個(gè)表的輸出映射時(shí),這些表應(yīng)該彼此具有外鍵關(guān)系,這樣一個(gè)表就是另一個(gè)表的子表。否則,使用多個(gè)輸出映射從不通過(guò)外鍵相關(guān)的表中進(jìn)行選擇。
要查詢子表,首先創(chuàng)建一個(gè)以父表為目標(biāo)的輸出映射。然后使用左上角的+添加按鈕從輸出映射編輯器中添加子表。從表列表中選擇適當(dāng)?shù)谋?,設(shè)計(jì)器將自動(dòng)填充表的層次結(jié)構(gòu)。選擇子表中應(yīng)包含在輸出映射中的列。
以下是包含子表的輸出映射示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
<Invoice selectQuery="SELECT * FROM `Invoice` "> <Id key="true"/>
<InvoiceLineItem table="INVOICELINEITEM">
<InvoiceId ref="@Id"/>
|
票行項(xiàng)目XML中的記錄與其父項(xiàng)發(fā)票相關(guān)聯(lián),發(fā)票由XML中的“ref”屬性標(biāo)識(shí)。此屬性指示端口使用WHERE子句為“InvoiceLineItem”表生成一個(gè)SELECT語(yǔ)句,該子句從父記錄中標(biāo)識(shí)InvoiceId。一張父發(fā)票可以有多個(gè)InvoiceLineItem。
審核編輯:符乾江
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3910瀏覽量
66005 -
端口
+關(guān)注
關(guān)注
4文章
1046瀏覽量
32844 -
MySQL
+關(guān)注
關(guān)注
1文章
850瀏覽量
27752
發(fā)布評(píng)論請(qǐng)先 登錄
MySQL數(shù)據(jù)庫(kù)采集網(wǎng)關(guān)是什么?有什么功能?
PLC數(shù)據(jù)中臺(tái)對(duì)接到MySQL數(shù)據(jù)庫(kù)并對(duì)接到生產(chǎn)看板

MySQL數(shù)據(jù)庫(kù)是什么
數(shù)據(jù)采集到MYSQL和SQLSERVER數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)哪些功能
工業(yè)智能網(wǎng)關(guān)采集能耗數(shù)據(jù)對(duì)接到MySQL數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MySQL數(shù)據(jù)庫(kù)誤刪除表記錄的數(shù)據(jù)恢復(fù)案例

從Delphi、C++ Builder和Lazarus連接到MySQL數(shù)據(jù)庫(kù)

使用插件將Excel連接到MySQL/MariaDB

適用于MySQL和MariaDB的Python連接器:可靠的MySQL數(shù)據(jù)連接器和數(shù)據(jù)庫(kù)

MySQL數(shù)據(jù)庫(kù)的安裝

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫(kù)ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例
香港云服務(wù)器怎么部署MySQL數(shù)據(jù)庫(kù)?
華納云:MySQL初始化操作如何創(chuàng)建新的數(shù)據(jù)庫(kù)
華納云:如何修改MySQL的默認(rèn)端口

評(píng)論