

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用在应用程序中转换 SQL 代码 AWS SCT
<a name="CHAP_Converting.App.Generic"></a>

您可以使用转换嵌入 AWS SCT 到应用程序中的 SQL 代码。通用 AWS SCT 应用程序转换器将您的应用程序代码视为纯文本。它会扫描您的应用程序代码并使用正则表达式提取 SQL 代码。该转换器支持不同类型的源代码文件，并且可以处理用任何编程语言编写的应用程序代码。

通用应用程序转换器具有以下限制。它不会深入探讨特定于应用程序编程语言的应用程序逻辑。此外，通用转换器不支持来自不同应用程序对象（例如函数、参数、局部变量等）的 SQL 语句。

要改进应用程序 SQL 代码转换，请使用特定于语言的应用程序 SQL 代码转换器。有关更多信息，请参阅 [C\$1 应用程序中的 SQL 代码](CHAP_Converting.App.Csharp.md)、[Java 中的 SQL 代码](CHAP_Converting.App.Java.md) 和 [Pro\$1C 中的 SQL 代码](CHAP_Converting.App.ProC.md)。

## 在中创建通用应用程序转换项目 AWS SCT
<a name="CHAP_Converting.App.Project"></a>

在中 AWS Schema Conversion Tool，应用程序转换项目是数据库架构转换项目的子项目。每个数据库架构转换项目都可以有一个或多个子应用程序转换项目。

**注意**  
AWS SCT 不支持在以下源和目标之间进行转换：  
Oracle 到 Oracle
PostgreSQL 到 PostgreSQL 或 Aurora PostgreSQL
MySQL 到 MySQL
SQL Server 到 SQL Server
Amazon Redshift 到 Amazon Redshift
SQL Server 到 Babelfish
SQL Server 集成服务提供给 AWS Glue
Apache Cassandra 到 Amazon DynamoDB

 使用以下过程创建通用应用程序转换项目。

**创建应用程序转换项目**

1. 在中 AWS Schema Conversion Tool，从 “**应用程序” 菜单上选择 “新建通用****应用程序**”。

   随即出现 **New application conversion project** 对话框。  
![\[“New application conversion project (新应用程序转换项目)”对话框\]](http://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/images/applications-new-project.png)

1. 添加以下项目信息。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/CHAP_Converting.App.Generic.html)

1. 选择**不要将绑定变量转换为 SQL 类型**，以避免将绑定变量类型转换为 SQL 类型。该选项仅适用于 Oracle 到 PostgreSQL 的转换。

   例如，您的源应用程序代码包括以下 Oracle 查询：

   ```
   SELECT * FROM ACCOUNT WHERE id = ?
   ```

   如果选择**不要将绑定变量转换为 SQL 类型**，则 AWS SCT 会按如下所示转换此查询。

   ```
   SELECT * FROM account WHERE id = ?
   ```

   清除**不要将绑定变量转换为 SQL 类型**后， AWS SCT 会将绑定变量类型更改为 `NUMERIC` 数据类型。转换结果如下所示。

   ```
   SELECT * FROM account WHERE id = (?)::NUMERIC
   ```

1. 选择**保留对象名称**，以避免将架构名称添加到已转换对象的名称中。该选项仅适用于 Oracle 到 PostgreSQL 的转换。

   例如，假定您的源应用程序代码包含以下 Oracle 查询。

   ```
   SELECT * FROM ACCOUNT
   ```

   当您选择**保留对象名称**时， AWS SCT 将转换此查询，如下所示。

   ```
   SELECT * FROM account
   ```

   清除**保留对象名称**后， AWS SCT 会将架构名称添加到表的名称中。转换结果如下所示。

   ```
   SELECT * FROM schema_name.account
   ```

   如果您的源代码在对象的名称中包含父对象的名称，则在转换后的代码中 AWS SCT 使用此格式。在这种情况下，请忽略**保留对象名称**选项，因为 AWS SCT 会在转换后的代码中添加父对象的名称。

1. 选择 **OK** 以创建应用程序转换项目。

   随即打开项目窗口。  
![\[项目窗口\]](http://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/images/applications-project-window.png)

## 在中管理应用程序转换项目 AWS SCT
<a name="CHAP_Converting.App.Manage"></a>

您可以打开现有的应用程序转换项目并添加多个应用程序转换项目。

在您创建应用程序转换项目时，项目窗口会自动打开。您可以关闭应用程序转换项目窗口，稍后再回来。

**打开现有应用程序转换项目**

1. 在左侧面板中，选择应用程序转换项目节点，然后打开上下文（右键单击）菜单。

1. 选择**管理应用程序**。

**添加其他应用程序转换项目**

1. 在左侧面板中，选择应用程序转换项目节点，然后打开上下文（右键单击）菜单。

1. 选择 **New application**（新建应用程序）。

1. 输入创建新的应用程序转换项目所需的信息。有关更多信息，请参阅 [创建通用应用程序转换项目](#CHAP_Converting.App.Project)。

## 分析并转换您的 SQL 代码 AWS SCT
<a name="CHAP_Converting.App.Convert"></a>

按照以下过程在 AWS Schema Conversion Tool中分析和转换 SQL 代码。

**分析和转换您的 SQL 代码**

1. 打开现有的应用程序转换项目，然后选择**分析**。

   AWS SCT 分析您的应用程序代码并提取 SQL 代码。 AWS SCT 在 “已解**析的 SQL 脚本” 列表中显示提取的 SQL** 代码。

1. 对于**已解析的 SQL 脚本**，请选择一个项目来查看其提取的 SQL 代码。 AWS SCT 在 “**提取的 SQL 脚本**” 窗格中显示所选项目的代码。

1. 选择 “**转换**”，在 “**提取的 SQL 脚本” 窗格中转换 SQL** 代码。 AWS SCT 将代码转换为与目标数据库兼容的格式。

   您可以编辑转换后的 SQL 代码。有关更多信息，请参阅 [编辑和保存转换后的 SQL 代码](#CHAP_Converting.App.Edit)。  
![\[要分析的 SQL 代码\]](http://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/images/applications-project-analyze.png)

1. 创建应用程序转换评估报告时， AWS SCT 会转换所有提取的 SQL 代码项。有关更多信息，请参阅 [创建和使用评估报告](#CHAP_Converting.App.AssessmentReport)。

## 在中创建和使用 AWS SCT 评估报告 AWS SCT
<a name="CHAP_Converting.App.AssessmentReport"></a>

*应用程序转换评估报告*提供了有关将应用程序 SQL 代码转换为与目标数据库兼容的格式的信息。该报告详细说明了所有提取的 SQL 代码、所有转换的 SQL 代码以及 AWS SCT 无法转换的 SQL 代码的操作项。

### 创建应用程序转换评估报告
<a name="CHAP_Converting.App.AssessmentReport.Create"></a>

使用以下过程创建应用程序转换评估报告。

**创建应用程序转换评估报告**

1. 在应用程序转换项目窗口中，在**操作** 菜单上选择**创建报告**。

   AWS SCT 创建应用程序转换评估报告并在应用程序转换项目窗口中将其打开。

1. 查看 **Summary** 选项卡。

   如下所示的**摘要**选项卡显示了应用程序评估报告中的摘要信息。它显示了已自动转换的 SQL 代码项目及未自动转换的项目。  
![\[“Application Assessment Report Summary (应用程序评估报告摘要)”选项卡\]](http://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/images/applications-summary.png)

1. 选择 **SQL 提取操作**。

   查看 AWS SCT 无法从源代码中提取的 SQL 代码项列表。

1. 选择 **SQL 转换操作**。

   查看 AWS SCT 无法自动转换的 SQL 代码项列表。使用推荐的操作手动转换 SQL 代码。有关如何编辑转换的 SQL 代码的信息，请参阅 [使用编辑和保存转换后的 SQL 代码 AWS SCT](#CHAP_Converting.App.Edit)。

1. （可选）将报告的本地副本另存为 PDF 文件或逗号分隔值（CSV）文件：
   + 选择右上角的**保存为 PDF**，将报告另存为 PDF 文件。

      PDF 文件包含应用程序转换的执行摘要、操作项和建议。
   + 选择右上角的**保存为 CSV**，将报告另存为 CSV 文件。

     CSV 文件包含操作项、推荐的操作以及转换 SQL 代码所需的估计人工操作的复杂性。

## 使用编辑和保存转换后的 SQL 代码 AWS SCT
<a name="CHAP_Converting.App.Edit"></a>

评估报告包含 AWS SCT 无法转换的 SQL 代码项列表。在 “**SQL 转换操作**” 选项卡上为每个项目 AWS SCT 创建一个措施项。对于这些项目，您可以手动编辑 SQL 代码以执行转换。

按照以下过程编辑转换后的 SQL 代码、应用更改，然后进行保存。

**编辑、应用更改并保存转换后的 SQL 代码**

1. 直接在 **Target SQL script** 窗格中编辑转换后的 SQL 代码。如果未显示转换后的代码，您可以单击窗格并开始键入。

1. 编辑完转换后的 SQL 代码，请选择 **Apply**。此时，更改便会保存在内存中，但尚未写入您的文件。

1. 选择 **Save** 将更改保存到文件中。

   当您选择**保存**时，会覆盖您的原始文件。在保存之前复制您的原始文件，以便记录原始应用程序代码。