

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將具有內嵌 BTEQ 命令的 Shell 指令碼轉換為具有 的 Amazon Redshift RSQL AWS Schema Conversion Tool
<a name="CHAP-converting-shell-rsql"></a>

您可以使用 AWS Schema Conversion Tool (AWS SCT) 將具有內嵌 Teradata Basic Teradata Query (BTEQ) 命令的 shell 指令碼轉換為具有內嵌 Amazon Redshift RSQL 命令的 shell 指令碼。

AWS SCT 從 shell 指令碼擷取 Teradata BTEQ 命令，並將其轉換為與 Amazon Redshift 相容的格式。將 Teradata 資料庫遷移至 Amazon Redshift 之後，您可以使用這些轉換後的指令碼來管理新的 Amazon Redshift 資料庫。

您也可以使用 AWS SCT 將檔案與 Teradata BTEQ ETL 指令碼轉換為 Amazon Redshift RSQL。如需詳細資訊，請參閱[使用 將 Teradata BTEQ 指令碼轉換為 Amazon Redshift RSQL AWS SCT](CHAP-converting-bteq-rsql.md)。

**Topics**
+ [將具有內嵌 Teradata BTEQ 命令的 Shell 指令碼新增至您的 AWS SCT 專案](#CHAP-converting-shell-rsql-create)
+ [使用內嵌 Teradata BTEQ 命令搭配 設定 Shell 指令碼中的替代變數 AWS SCT](#CHAP-converting-shell-rsql-variables)
+ [使用 轉換具有內嵌 Teradata BTEQ 命令的 Shell 指令碼 AWS SCT](#CHAP-converting-shell-rsql-convert)
+ [使用內嵌 Teradata BTEQ 命令搭配 管理 shell 指令碼 AWS SCT](#CHAP-converting-shell-rsql-manage)
+ [使用 建立 Shell 指令碼轉換的評估報告 AWS SCT](#CHAP-converting-shell-rsql-assessment)
+ [使用 編輯和儲存轉換後的 shell 指令碼 AWS SCT](#CHAP-converting-shell-rsql-save)

## 將具有內嵌 Teradata BTEQ 命令的 Shell 指令碼新增至您的 AWS SCT 專案
<a name="CHAP-converting-shell-rsql-create"></a>

您可以將多個指令碼新增至單一 AWS SCT 專案。

**將 shell 指令碼新增至您的 AWS SCT 專案**

1. 在 中建立新專案 AWS SCT 或開啟現有專案。如需詳細資訊，請參閱[在 中啟動和管理專案 AWS SCT](CHAP_UserInterface.Project.md)。

1. 從功能表中選擇**新增來源**，然後選擇 **Teradata** 將來源資料庫新增至專案。如需詳細資訊，請參閱[Teradata 資料庫](CHAP_Source.Teradata.md)。

1. 從選單中選擇**新增目標**，並將目標 Amazon Redshift 資料庫新增至您的 AWS SCT 專案。

   您可以使用虛擬 Amazon Redshift 目標資料庫平台。如需詳細資訊，請參閱[映射至 中的虛擬目標 AWS Schema Conversion Tool](CHAP_Mapping.VirtualTargets.md)。

1. 建立新的映射規則，其中包含您的來源 Teradata 資料庫和 Amazon Redshift 目標。如需詳細資訊，請參閱[在 中映射新資料類型 AWS Schema Conversion Tool](CHAP_Mapping.New.md)。

1. 在**檢視**功能表上，選擇**主檢視**。

1. 在左側面板中，展開 **Scripts** 節點。

1.  選擇 **Shell**，開啟內容 （按一下滑鼠右鍵） 選單，然後選擇**載入指令碼**。

1.  使用內嵌 Teradata BTEQ 命令輸入來源 shell 指令碼的位置，然後選擇**選取資料夾**。

   AWS SCT 會顯示**載入指令碼**視窗。

1. 執行以下任意一項：
   + 如果您的 Shell 指令碼不包含替代變數，請選擇**無替代變數**，然後選擇**確定**將指令碼新增至您的 AWS SCT 專案。
   + 如果您的 Shell 指令碼包含替代變數，請設定替代變數。如需詳細資訊，請參閱[在 shell 指令碼中設定替代變數](#CHAP-converting-shell-rsql-variables)。

## 使用內嵌 Teradata BTEQ 命令搭配 設定 Shell 指令碼中的替代變數 AWS SCT
<a name="CHAP-converting-shell-rsql-variables"></a>

您的 shell 指令碼可以包含替代變數。例如，您可以使用具有替代變數的單一指令碼來管理不同環境中的資料庫。您可以使用 在 shell 指令碼中 AWS SCT 設定替代變數。

使用 shell 指令碼的替代變數執行 BTEQ 命令之前，請務必為此 shell 指令碼內的所有變數指派值。只有在您指派替代變數的值之後， AWS SCT 才能解析和轉換替代變數。

**在 shell 指令碼中設定替代變數**

1. 將來源 shell 指令碼新增至您的 AWS SCT 專案。如需詳細資訊，請參閱[將 shell 指令碼新增至您的 AWS SCT 專案](#CHAP-converting-shell-rsql-create)。

   當您新增指令碼時，請選擇**使用替代變數**。

1. 針對**定義變數格式**，輸入符合指令碼中所有替代變數的規則運算式。

   例如，如果您的替代變數名稱開頭`${`為 ，結尾為 `}`，請使用`\$\{\w+\}`規則表達式。若要比對以貨幣符號或百分比符號開頭的替代變數，請使用`\$\w+|\%\w+`規則表達式。

   中的規則表達式 AWS SCT 符合 Java 規則表達式語法。如需詳細資訊，請參閱 Java 文件中的 [java.util.regex 類別模式](https://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)。

1. 選擇**確定**將指令碼載入 AWS SCT 專案，然後選擇**確定**關閉**載入指令碼**視窗。

1. 選擇**變數**以檢視所有探索到的替代變數及其值。

1. 針對**值**，輸入替代變數的值。

## 使用 轉換具有內嵌 Teradata BTEQ 命令的 Shell 指令碼 AWS SCT
<a name="CHAP-converting-shell-rsql-convert"></a>

接下來，了解如何使用 將具有內嵌 Teradata BTEQ 命令的 shell 指令碼轉換為具有內嵌 Amazon Redshift RSQL 命令的 shell 指令碼 AWS SCT。

**轉換 shell 指令碼**

1. 將 shell 指令碼新增至您的 AWS SCT 專案。如需詳細資訊，請參閱[將 shell 指令碼新增至您的 AWS SCT 專案](#CHAP-converting-shell-rsql-create)。

1. 設定替代變數。如需詳細資訊，請參閱[在 shell 指令碼中設定替代變數](#CHAP-converting-shell-rsql-variables)。

1. 在左側面板中，展開 **Scripts** 節點。

1. 執行以下任意一項：
   + 若要從單一 Shell 指令碼轉換 BTEQ 命令，請展開 **Shell** 節點，選擇要轉換的指令碼，然後從內容選單中選擇**轉換指令碼** （按一下滑鼠右鍵）。
   + 若要隱藏多個指令碼，請務必選取要轉換的所有指令碼。然後選擇 **Shell**，開啟內容 （按一下滑鼠右鍵） 選單，然後選擇**轉換指令碼**。

1. 選擇**確定**。

   AWS SCT 會將所選 Shell 指令碼中的 BTEQ 命令轉換為與 Amazon Redshift RSQL 相容的格式。在目標資料庫面板的指令碼節點中尋找轉換後的**指令碼**。

1. 編輯轉換後的 Amazon Redshift RSQL 指令碼或儲存指令碼。如需詳細資訊，請參閱[編輯和儲存轉換後的 shell 指令碼](#CHAP-converting-shell-rsql-save)。

## 使用內嵌 Teradata BTEQ 命令搭配 管理 shell 指令碼 AWS SCT
<a name="CHAP-converting-shell-rsql-manage"></a>

您可以新增多個 shell 指令碼，或從專案中移除 shell AWS SCT 指令碼。

**將新的 shell 指令碼新增至您的 AWS SCT 專案**

1. 展開左側面板中的**指令碼**節點。

1. 選擇 **Shell** 節點，然後開啟內容 （按一下滑鼠右鍵） 選單。

1. 選擇**載入指令碼**。

1. 輸入新增 shell 指令碼和設定替代變數所需的資訊。如需詳細資訊，請參閱[將 shell 指令碼新增至您的 AWS SCT 專案](#CHAP-converting-shell-rsql-create)及[在 shell 指令碼中設定替代變數](#CHAP-converting-shell-rsql-variables)。

**從 AWS SCT 專案中移除 shell 指令碼**

1. 在左側面板的**指令碼**下展開 **Shell** 節點。

1. 選擇要移除的指令碼，然後開啟內容 （按一下滑鼠右鍵） 選單。

1. 選擇**刪除指令碼**。

## 使用 建立 Shell 指令碼轉換的評估報告 AWS SCT
<a name="CHAP-converting-shell-rsql-assessment"></a>

*shell 指令碼轉換評估報告*提供有關轉換 BTEQ 命令和 SQL 陳述式的資訊。轉換是從來源指令碼轉換為與 Amazon Redshift RSQL 相容的格式。評估報告包含 BTEQ 命令的動作項目，以及 AWS SCT 無法轉換的 SQL 陳述式。

**建立 shell 指令碼轉換評估報告**

1. 在左側面板的**指令碼**下展開 **Shell** 節點。

1. 選擇要轉換的指令碼、開啟內容 （按一下滑鼠右鍵） 選單，然後選擇**建立報告**。

1. 檢視**摘要**索引標籤。**摘要**索引標籤會顯示 shell 指令碼評估報告中的執行摘要資訊。它包含來源指令碼中所有 BTEQ 命令和 SQL 陳述式的轉換結果。

1. （選用） 將 shell 指令碼轉換評估報告的本機副本儲存為 PDF 檔案或逗號分隔值 (CSV) 檔案：
   + 若要將 shell 指令碼轉換評估報告儲存為 PDF 檔案，請選擇右上角的**儲存為 PDF**。

      PDF 檔案包含執行摘要、動作項目和指令碼轉換的建議。
   + 若要將 shell 指令碼轉換評估報告儲存為 CSV 檔案，請選擇右上角的**儲存到 CSV**。

     CSV 檔案包含動作項目、建議的動作，以及轉換指令碼所需的預估手動工作複雜度。

1. 選擇**動作項目**索引標籤。此標籤包含需要手動轉換為 Amazon Redshift RSQL 的項目清單。當您從清單中選取動作項目時， 會從套用動作項目的來源 shell 指令碼 AWS SCT 反白顯示該項目。

## 使用 編輯和儲存轉換後的 shell 指令碼 AWS SCT
<a name="CHAP-converting-shell-rsql-save"></a>

您可以在 AWS SCT 專案的下方面板中編輯轉換後的指令碼。 會將已編輯的指令碼 AWS SCT 儲存為專案的一部分。

**儲存轉換後的指令碼**

1. 在目標資料庫面板的指令碼下展開 **RSQL** **指令碼**節點。

1. 選擇轉換後的指令碼，開啟內容 （按一下滑鼠右鍵） 選單，然後選擇**儲存指令碼**。

1. 輸入資料夾的路徑以儲存轉換後的指令碼，然後選擇**儲存**。

   AWS SCT 會將轉換後的指令碼儲存至檔案，並開啟此檔案。