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