在 MySQL 資料庫上執行 CRUD 作業
本教學課程將說明如何透過範例整合功能連線至 MySQL 資料庫執行個體,並對 MySQL 資料庫資料表執行「List」、「Get」、「Create」、「Update」和「Delete」作業。
如要完成本教學課程,請執行下列工作:
事前準備
- 確認您有權存取整合服務。
-
在 Google Cloud 專案中執行下列操作:
- 將下列角色授予您要用來建立連線的服務帳戶:
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
- 啟用下列服務:
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(連接器 API)
如果您之前未為專案啟用這些服務,系統會在「建立連線」頁面中建立連線時,提示您啟用這些服務。
- 將下列角色授予您要用來建立連線的服務帳戶:
- 請確認您有權存取 MySQL 伺服器,以便建立資料庫。
在 MySQL 伺服器中設定資料庫和資料表
連線至 MySQL 伺服器,並建立本教學課程中要使用的資料庫和資料表。-
如要連線至 MySQL 伺服器,請在已安裝 MySQL 用戶端的系統中執行下列指令:
在這個範例中,請替換:mysql --host=MySQL server host name or IP address --port=MySQL server port number -uusername -ppassword
-
MySQL server host name or IP address
與 MySQL 伺服器的名稱或 IP 位址。 -
MySQL server port number
與 MySQL 伺服器的通訊埠號碼。 -
username
與 MySQL 伺服器的使用者名稱。 -
password
與 MySQL 伺服器的密碼。
-
-
如要建立本教學課程中使用的 MySQL 資料庫,請在 MySQL 用戶端中執行下列指令:
CREATE DATABASE tutorialDB;
-
如要建立在本教學課程中使用的資料表,請在 MySQL 用戶端中執行下列指令:
create table employee ( employee_id int auto_increment primary key, employee_first_name varchar(500) NOT null, employee_last_name varchar(500) NOT null, employee_emailID varchar(500) );
-
如要將資料列新增至您建立的
employee
資料表,請在 MySQL 用戶端中執行下列指令:INSERT INTO employee (employee_first_name,employee_last_name,employee_emailID) values ("Peter","Dilliard","test-01@test.com"); INSERT INTO employee (employee_first_name,employee_last_name,employee_emailID) values ("Meaghan","Webb","test-02@test.com");
- 執行下列指令,確認資料表已建立且已新增資料列:
系統會顯示下列表格資料列:SELECT * FROM employee;
+-------------+---------------------+--------------------+------------------+ | employee_id | employee_first_name | employee_last_name | employee_emailID | +-------------+---------------------+--------------------+------------------+ | 1 | Peter | Dilliard | test-01@test.com | | 2 | Meaghan | Webb | test-02@test.com | +-------------+---------------------+--------------------+------------------+
建立 MySQL 連線
如要啟用整合功能,以便連線至 MySQL 資料庫,請建立至 MySQL 資料庫的新連線:
- 按一下「+ 建立新連線」,開啟「建立連線」頁面。
- 在「位置」部分,選擇連線的位置。
- 在「Region」清單中,選取要建立連線的區域。
如需所有支援地區的清單,請參閱「位置」一節。
- 點選「下一步」。
- 在「Region」清單中,選取要建立連線的區域。
- 在「連線詳細資料」部分中,輸入下列詳細資料:
- 在「Connector」清單中選取「MySQL」。
- 在「Connector version」清單中,選取連接器版本。
- 在「Connection Name」欄位中,輸入連線執行個體的名稱。
連線名稱必須符合下列條件:
- 請使用英文字母、數字或連字號。
- 字母必須為小寫。
- 名稱開頭必須是英文字母,結尾則須為英文字母或數字。
- 名稱長度不得超過 49 個半形字元。
- 選用:在「Description」欄位中新增連線執行個體的說明。
- 選用:啟用 Cloud Logging。
- 從「Service Account」(服務帳戶) 清單中選取具備必要角色的服務帳戶。
- 在「Database name」(資料庫名稱) 欄位中輸入 MySQL 資料庫的名稱。
- 視需要設定連線節點設定:
- 節點數量下限:輸入連線節點數量下限。
- 節點數量上限:輸入連線節點數量上限。
節點是用來處理交易的連線單位 (或備用資源)。處理的交易量越多,就需要越多節點;反之,處理的交易量越少,就需要越少節點。如要瞭解節點對連接器定價的影響,請參閱「 連線節點的定價」。如果您未輸入任何值,系統預設會將最小節點設為 2 (以提高可用性),並將最大節點設為 50。
- (選用) 在「進階設定」部分,選取「使用 Proxy」核取方塊,為連線設定 Proxy 伺服器,並設定下列值:
-
Proxy Auth Scheme:選取要用於 Proxy 伺服器驗證的驗證類型。支援下列驗證類型:
- Basic:基本 HTTP 驗證。
- Digest:Digest HTTP 驗證。
- Proxy User:用於與 Proxy 伺服器進行驗證的使用者名稱。
- Proxy Password:使用者密碼的 Secret Manager 密鑰。
-
Proxy SSL Type:連線至 Proxy 伺服器時要使用的 SSL 類型。支援下列驗證類型:
- 自動:預設設定。如果網址是 HTTPS 網址,則會使用「隧道」選項。如果網址是 HTTP 網址,則會使用「從不」選項。
- 一律:連線一律啟用 SSL。
- Never:未啟用 SSL 連線。
- 通道:透過通道 Proxy 建立連線。Proxy 伺服器會開啟與遠端主機的連線,並透過 Proxy 來回傳送流量。
- 在「Proxy 伺服器」部分中,輸入 Proxy 伺服器的詳細資料。
- 選用:如要為連線新增標籤,請按一下「+ 新增標籤」。
- 點選「下一步」。
- 在「目的地」專區中,輸入要連線的遠端主機 (後端系統) 詳細資料。
- 從「Destination Type」清單中選取主機位址。
- 從清單中選取「主機位址」,指定目的地的主機名稱或 IP 位址。
- 如果您想建立與後端系統的私人連線,請從清單中選取「Endpoint attachment」,然後從「Endpoint Attachment」清單中選取所需的端點附件。
如果您想建立與後端系統的公開連線,並提供額外安全性,建議您為連線設定靜態外連 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址進入白名單。
如要輸入其他目的地,請按一下「+新增目的地」。
- 點選「下一步」。
- 從「Destination Type」清單中選取主機位址。
- 在「Authentication」(驗證) 部分中,您可以提供憑證:
- 在「Username」欄位中,輸入連線的 MySQL 使用者名稱。
- 在「密碼」欄位中輸入 Secret Manager 密鑰,其中包含與 MySQL 使用者名稱相關聯的密碼。
- 如果您先前建立的密鑰不在清單中,請選取「手動輸入密鑰」。在「Add a secret by resource ID」對話方塊中,複製並貼上 Secret Manager 的資源 ID。
- 如要使用最新版本,請複製並貼上父項密鑰的資源 ID,格式如下:
"projects/project-number/secrets/secret-name"
- 如要選取特定版本,請複製並貼上該版本的資源 ID,格式為
"projects/project-number/secrets/secret-name/versions/1"
如要新增密鑰,請按一下「新增密鑰」。
- 如要使用最新版本,請複製並貼上父項密鑰的資源 ID,格式如下:
- 如果您尚未建立用於 MySQL 的密鑰,請按一下「Create New Secret」。在「Create Secret」對話方塊中輸入以下詳細資料:
- 在「Name」欄位中輸入密鑰名稱。
- 在「Secret value」(密鑰值) 欄位中輸入密鑰內容,或上傳包含密鑰的檔案。
- 按一下「Create Secret」。
- 如果您先前建立的密鑰不在清單中,請選取「手動輸入密鑰」。在「Add a secret by resource ID」對話方塊中,複製並貼上 Secret Manager 的資源 ID。
- 在「Secret version」清單中,從下拉式選單的可用版本清單中選取「Password」機密金鑰的版本。
- 按一下「下一步」。
- 在「查看」部分中,查看連線和驗證詳細資料。
- 按一下 [建立]。
設定整合功能以使用 MySQL 連線
如要使用在整合中建立的 MySQL 連線,請在整合中新增 Connectors 工作,並加上 API 觸發條件。API 觸發事件會使用 Edge 連線連接至 Connector 工作。
建立新的整合
- 前往 Google Cloud 控制台的「Integration Connectors」(整合連接器) 頁面。
- 在導覽選單中,按一下「整合」。
「Integrations List」(整合清單) 頁面隨即顯示。
- 選取現有的整合服務,或按一下「建立整合功能」來建立新的整合服務。
系統會在整合服務編輯器頁面中開啟整合服務。
- 在整合服務編輯器中,按一下「+ 新增任務/觸發條件」>「任務」,即可查看可用任務清單。
- 按一下「建立新檔案」。
- 在「Create Integration」對話方塊中輸入名稱和說明 (選填)。
- 按一下「建立」開啟整合服務編輯器。
新增及設定 API 觸發條件
如要新增並設定整合的 API 觸發條件,請按照下列步驟操作:
- 在整合編輯器中,依序選取「Add a task/trigger」>「Triggers」,即可查看可用觸發條件清單。
- 將「API Trigger」元素拖曳至整合服務編輯器。
新增及設定「Connectors」(連接器) 任務
請按照下列步驟設定 Connectors 工作,列出 employee
資料表中的所有實體:
- 在整合服務編輯器中依序選取「+新增任務/觸發條件」>「任務」,即可顯示可用任務清單。
- 將「Connectors」元素拖曳至整合服務編輯器。
- 按一下設計工具中的「Connectors」任務元素,即可查看任務設定窗格。
- 按一下「設定工作」。
系統會顯示「Configure connector task」對話方塊。
- 在「Configure connector task」對話方塊中,執行下列操作:
- 選取您建立 MySQL 連線的連線區域。
- 選擇地區後,畫面上會顯示「Connection」欄。從可用連線清單中選取您建立的 MySQL 連線。
- 選取連線後,畫面上會顯示「Type」欄。在可用實體清單中,依序選取「實體」和「員工」。
- 選擇類型後,畫面上會顯示「Operation」欄。選取「清單」。
- 按一下「完成」,完成連線設定並關閉對話方塊。
將 API 觸發條件元素連結至連接器任務元素
接著,新增邊緣連結,將 API 觸發條件連結至連接器工作。邊緣連線是指整合中任兩個元素之間的連線。如要進一步瞭解邊界和邊界條件,請參閱「邊界」。
如要新增邊緣連線,請按一下 API 觸發條件元素底部的「分支」控制點。將邊緣連線拖曳到「Join」控制點,該控制點位於「Connectors」任務元素頂端。
測試整合
如要測試整合,請按照下列步驟操作:
- 按一下整合服務編輯器工具列中的「Test」按鈕。
- 如有需要,請變更「執行期限 (分鐘)」值,然後按一下「測試整合」。
- 整合完成後,「Test Integration」窗格會顯示「Integration execution succeeded」訊息。如要查看記錄,請按一下「查看記錄」。
- 在「回應參數」的「連接器輸出酬載」下方,會顯示下列輸出內容:
[ { "employee_id": 1.0, "employee_first_name": "Peter", "employee_last_name": "Dilliard", "employee_emailID": "test-01@test.com" }, { "employee_id": 2.0, "employee_first_name": "Meaghan", "employee_last_name": "Webb", "employee_emailID": "test-02@test.com" } ]
在 MySQL 資料庫資料表上執行其他作業
在整合中設定連接器工作時,您可以選取下列任一操作:
- 清單
- 取得
- 建立
- 更新
- 刪除
您已使用 List 作業查看 employee
資料表中的所有資料列。在本教學課程的後續章節中,您將使用 Get、Create、Update 和 Delete 作業,在 employee
資料表中新增、修改或移除資料列。
取得資料表中的資料列
如果您知道要擷取的資料列實體 ID (或主鍵),請將該值做為整合作業中的 Get 作業輸入。Get 作業傳回的詳細資料與 List 作業傳回的詳細資料類似。不過,List 作業會擷取符合指定查詢的所有資料表資料列詳細資料,而 Get 作業只會擷取符合指定實體 ID 的資料表資料列詳細資料。
請注意,雖然清單作業預設會傳回資料表中的所有資料列,但 Get 作業需要實體 ID 做為搜尋參數。因此,如要使用 Get 作業,您必須知道要擷取的資料列實體 ID,或是提供實體 ID 的預設值。
如要取得指定資料列的詳細資料,請按照下列步驟設定先前建立的 Connectors 工作:
- 按一下設計工具中的「Connectors」任務元素,即可查看任務設定窗格。
- 按一下「設定工作」。
系統會顯示「Configure connector task」對話方塊。
- 在「Configure connector task」對話方塊的「Operation」欄中,選取「Get」,然後按一下「Done」。
- 在任務設定窗格中,點選「Task Input」下方的「實體 ID」。
- 在「設定變數」對話方塊中,選取「將做為整合輸入內容使用」,然後按一下「儲存」。
- 按一下整合服務編輯器工具列中的「Test」按鈕。
- 如有需要,請變更「執行期限 (分鐘)」值。
- 輸入要擷取詳細資料的實體 ID。輸入「2」。
- 按一下「測試整合」。
- 整合完成後,「Test Integration」窗格會顯示「Integration execution succeeded」訊息。如要查看記錄,請按一下「查看記錄」。
- 在「回應參數」的「連接器輸出酬載」下方,會顯示下列輸出內容:
[ { "employee_id": 2.0, "employee_first_name": "Meaghan", "employee_last_name": "Webb", "employee_emailID": "test-02@test.com" } ]
- 您可以確認這裡顯示的資訊,是否與 MySQL 資料表中對應資料列的資訊相符。如要在 MySQL 資料表中查看這項資訊,請在 MySQL 用戶端中執行下列指令:
顯示下列表格資料列:SELECT * FROM employee WHERE employee_id=2;
+-------------+---------------------+--------------------+------------------+ | employee_id | employee_first_name | employee_last_name | employee_emailID | +-------------+---------------------+--------------------+------------------+ | 2 | Meaghan | Webb | test-02@test.com | +-------------+---------------------+--------------------+------------------+
在表格中新增資料列
您可以使用 Create 運算,在資料表中新增資料列。使用建立作業時,您必須在連接器輸入酬載中提供實體的所有值。
如要使用 Create 作業新增資料列,請按照下列步驟設定先前建立的 Connectors 工作:
- 按一下設計工具中的「Connectors」任務元素,即可查看任務設定窗格。
- 按一下「設定工作」。
系統會顯示「Configure connector task」對話方塊。
- 在「Configure connector task」對話方塊的「Operation」欄中,選取「Create」,然後按一下「Done」。
- 在任務設定窗格中,點選「Task Input」(任務輸入內容) 下方的「Connector input payload」(連接器輸入酬載)。
- 在「設定變數」對話方塊中,選取「將做為整合輸入內容使用」,然後按一下「儲存」。
- 按一下整合服務編輯器工具列中的「Test」按鈕。
- 如有需要,請變更「執行期限 (分鐘)」值。
- 輸入要建立實體的詳細資料。例如,如要在
employee
資料表中新增員工,請輸入下列 JSON:{ "employee_first_name": "Mary", "employee_last_name": "Smith", "employee_emailID": "test-03@test.com" }
- 按一下「測試整合」。
- 整合完成後,「Test Integration」窗格會顯示「Integration execution succeeded」訊息。如要查看記錄,請按一下「查看記錄」。
- 在「Response Parameters」的「Connector input payload」下方,系統會顯示您提供的酬載:
「Connector output payload」下方,實體 ID 會顯示為輸出內容:{ "employee_first_name": "Mary", "employee_last_name": "Smith", "employee_emailID": "test-03@test.com" }
{ "employee_id": 3.0 }
-
您可以確認資料列是否已新增至 MySQL 資料表。如要在 MySQL 資料表中查看這項資訊,請在 MySQL 用戶端中執行下列指令:
系統會顯示下列表格資料列:SELECT * FROM employee;
+-------------+---------------------+--------------------+------------------+ | employee_id | employee_first_name | employee_last_name | employee_emailID | +-------------+---------------------+--------------------+------------------+ | 1 | Peter | Dilliard | test-01@test.com | | 2 | Meaghan | Webb | test-02@test.com | | 3 | Mary | Smith | test-03@test.com | +-------------+---------------------+--------------------+------------------+
更新資料表中的資料列
使用更新運算,變更資料表列中的值。舉例來說,您可以使用這個運算,在 employee
資料表中更新員工的電子郵件 ID。如要指定要更新的實體,您可以提供實體 ID,就像使用 Get 作業一樣。或者,您也可以使用 Filter 子句參數傳遞值,用於篩選表格資料列。如果您想根據特定搜尋條件,在多個資料列中進行相同的變更,這項功能就非常實用。
如要更新資料表資料列,請按照下列步驟設定先前建立的 Connectors 工作:
- 按一下設計工具中的「Connectors」任務元素,即可查看任務設定窗格。
- 按一下「設定工作」。
系統隨即會顯示「Configure connector task」對話方塊。
- 在「Configure connector task」對話方塊的「Operation」欄中,選取「Update」,然後按一下「Done」。
- 在任務設定窗格中,點選「Task Input」(任務輸入內容) 下方的「Connector input payload」(連接器輸入酬載)。
- 在「設定變數」對話方塊中,選取「將做為整合輸入內容使用」,然後按一下「儲存」。
- 接著,在任務設定窗格中,點選「Task Input」下方的「Filter clause」。
- 在「設定變數」對話方塊中,選取「將做為整合輸入內容使用」,然後按一下「儲存」。
- 按一下整合服務編輯器工具列中的「Test」按鈕。
- 如有需要,請變更「執行期限 (分鐘)」值。
- 輸入要做為篩選依據的條件。舉例來說,如要尋找電子郵件 ID 為
test-03@test.com
的員工,請輸入:employee_emailID="test-03@test.com"
- 輸入要更新的值。舉例來說,如要更新
employee
資料表中所有員工的電子郵件 ID,且這些員工目前的電子郵件 ID 與篩選子句test-03@test.com
相符,請輸入下列 JSON:{ "employee_emailID": "msmith@test.com" }
- 按一下「測試整合」。
- 整合完成後,「Test Integration」窗格會顯示「Integration execution succeeded」訊息。如要驗證實體是否已更新,請使用 Get 作業取得指定實體的詳細資料。
- 您可以驗證 MySQL 資料表中是否已更新資料列。如要在 MySQL 資料表中查看這項資訊,請在 MySQL 用戶端中執行下列指令:
系統會顯示下列表格資料列:SELECT * FROM employee;
+-------------+---------------------+--------------------+------------------+ | employee_id | employee_first_name | employee_last_name | employee_emailID | +-------------+---------------------+--------------------+------------------+ | 1 | Peter | Dilliard | test-01@test.com | | 2 | Meaghan | Webb | test-02@test.com | | 3 | Mary | Smith | msmith@test.com | +-------------+---------------------+--------------------+------------------+
刪除資料表中的資料列
您可以使用「刪除」作業刪除一或多個資料表列。提供實體 ID,或使用篩選子句指定要刪除的資料列。請注意,如果您使用篩選器子句指定要刪除的資料列條件,系統可能會刪除符合指定篩選器的多個資料列。如要只刪除一列資料,請使用實體 ID。
如要使用實體 ID 刪除資料表資料列,請按照下列步驟設定先前建立的「連接器」工作:
- 按一下設計工具中的「Connectors」任務元素,即可查看任務設定窗格。
- 按一下「設定工作」。
系統隨即會顯示「Configure connector task」對話方塊。
- 在「Configure connector task」對話方塊的「Operation」欄中,選取「Delete」,然後按一下「Done」。
- 在任務設定窗格中,點選「Task Input」(任務輸入內容) 下方的「實體 ID」。
- 在「設定變數」對話方塊中,選取「將做為整合輸入內容使用」,然後按一下「儲存」。
- 按一下整合服務編輯器工具列中的「Test」按鈕。
- 如有需要,請變更「執行期限 (分鐘)」值。
- 輸入要刪除的資料表列實體 ID。輸入「3」。
- 按一下「測試整合」。
-
整合完成後,「Test Integration」窗格會顯示「Integration execution succeeded」訊息。如要驗證資料表資料列是否已刪除,請使用 Get 作業取得已刪除的資料列詳細資料。這應該會針對指定的實體 ID 傳回錯誤。
您也可以使用 List 作業,並視需要為刪除的表格資料列提供篩選器子句。這個方法會傳回剩餘的資料列清單,這可能為空白清單。
舉例來說,如果您刪除實體 ID 3 的資料表資料列,然後指定清單作業的篩選子句
employee_emailID="msmith@test.com"
或實體 ID 3,則記錄檔中的回應參數會顯示[]
。 -
您可以確認資料列是否已從 MySQL 資料表中刪除。如要在 MySQL 資料表中驗證這項資訊,請透過 MySQL 用戶端執行下列指令:
系統會顯示下列表格資料列:SELECT * FROM employee;
+-------------+---------------------+--------------------+------------------+ | employee_id | employee_first_name | employee_last_name | employee_emailID | +-------------+---------------------+--------------------+------------------+ | 1 | Peter | Dilliard | test-01@test.com | | 2 | Meaghan | Webb | test-02@test.com | +-------------+---------------------+--------------------+------------------+