使用 AWS SCT 转换应用程序中的 SQL 代码
您可以使用 AWS SCT 转换嵌入到应用程序中的 SQL 代码。通用 AWS SCT 应用程序转换器将您的应用程序代码视为纯文本。它会扫描您的应用程序代码并使用正则表达式提取 SQL 代码。该转换器支持不同类型的源代码文件,并且可以处理用任何编程语言编写的应用程序代码。
通用应用程序转换器具有以下限制。它不会深入探讨特定于应用程序编程语言的应用程序逻辑。此外,通用转换器不支持来自不同应用程序对象(例如函数、参数、局部变量等)的 SQL 语句。
要改进应用程序 SQL 代码转换,请使用特定于语言的应用程序 SQL 代码转换器。有关更多信息,请参阅 C# 应用程序中的 SQL 代码、Java 中的 SQL 代码 和 Pro*C 中的 SQL 代码。
在 AWS SCT 中创建通用应用程序转换项目
在 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 Integration Services 到 AWS Glue
Apache Cassandra 到 Amazon DynamoDB
使用以下过程创建通用应用程序转换项目。
创建应用程序转换项目
-
在 AWS Schema Conversion Tool 中,在应用程序菜单上选择新建通用应用程序。
随即出现 New application conversion project 对话框。
-
添加以下项目信息。
对于此参数 请执行该操作 名称 输入您的应用程序转换项目的名称。每个数据库架构转换项目都可以有一个或多个子应用程序转换项目,因此如果您在事后添加更多项目的话,请选择一个有意义的名称。
位置 输入您的应用程序源代码的位置。
语言 选择以下操作之一:
Java
C++
C#
任何
目标参数样式 选择转换后的代码中用于绑定变量的语法。不同的数据库平台对绑定变量使用不同的语法。请选择以下选项之一:
Same as in source
Positional (?)
Indexed (:1)
Indexed ($1)
Named (@name)
Named (:name)
Named (&name)
Named ($name)
Named (#name)
Named (!name!)
选择源数据库架构 在源树状图中,选择应用程序所用的架构。确保此架构是映射规则的一部分。
-
选择不要将绑定变量转换为 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
-
选择保留对象名称,以避免将架构名称添加到已转换对象的名称中。该选项仅适用于 Oracle 到 PostgreSQL 的转换。
例如,假定您的源应用程序代码包含以下 Oracle 查询。
SELECT * FROM ACCOUNT
当您选择保留对象名称时,AWS SCT 将转换此查询,如下所示。
SELECT * FROM account
清除保留对象名称后,AWS SCT 会将架构名称添加到表的名称中。转换结果如下所示。
SELECT * FROM schema_name.account
如果您的源代码在对象的名称中包含父对象的名称,则 AWS SCT 在转换后的代码中使用此格式。在这种情况下,请忽略保留对象名称选项,因为 AWS SCT 会在转换后的代码中添加父对象的名称。
-
选择 OK 以创建应用程序转换项目。
随即打开项目窗口。
在 AWS SCT 中管理应用程序转换项目
您可以打开现有的应用程序转换项目并添加多个应用程序转换项目。
在您创建应用程序转换项目时,项目窗口会自动打开。您可以关闭应用程序转换项目窗口,稍后再回来。
打开现有应用程序转换项目
在左侧面板中,选择应用程序转换项目节点,然后打开上下文(右键单击)菜单。
选择管理应用程序。
添加其他应用程序转换项目
在左侧面板中,选择应用程序转换项目节点,然后打开上下文(右键单击)菜单。
选择 New application(新建应用程序)。
输入创建新的应用程序转换项目所需的信息。有关更多信息,请参阅 创建通用应用程序转换项目。
在 AWS SCT 中分析和转换 SQL 代码
按照以下过程在 AWS Schema Conversion Tool 中分析和转换 SQL 代码。
分析和转换您的 SQL 代码
-
打开现有的应用程序转换项目,然后选择分析。
AWS SCT 分析应用程序代码并提取 SQL 代码。AWS SCT 在已解析的 SQL 脚本列表中显示提取的 SQL 代码。
-
对于已解析的 SQL 脚本,请选择一个项目来查看其提取的 SQL 代码。AWS SCT 在提取的 SQL 脚本窗格中显示所选项目的代码。
-
选择转换,在提取的 SQL 脚本窗格中转换 SQL 代码。AWS SCT 将代码转换为与目标数据库兼容的格式。
您可以编辑转换后的 SQL 代码。有关更多信息,请参阅 编辑和保存转换后的 SQL 代码。
-
创建应用程序转换评估报告时,AWS SCT 会转换所有提取的 SQL 代码项。有关更多信息,请参阅 创建和使用评估报告。
在 AWS SCT 中创建和使用 AWS SCT 评估报告。
应用程序转换评估报告提供了有关将应用程序 SQL 代码转换为与目标数据库兼容的格式的信息。该报告详细列出了所有提取的 SQL 代码、所有经过转换的 SQL 代码以及无法转换的 SQL 的操作项。
创建应用程序转换评估报告
使用以下过程创建应用程序转换评估报告。
创建应用程序转换评估报告
-
在应用程序转换项目窗口中,在操作 菜单上选择创建报告。
AWS SCT 创建应用程序转换评估报告并在应用程序转换项目窗口中将其打开。
-
查看 Summary 选项卡。
如下所示的摘要选项卡显示了应用程序评估报告中的摘要信息。它显示了已自动转换的 SQL 代码项目及未自动转换的项目。
-
选择 SQL 提取操作。
查看 AWS SCT 无法从源代码中提取的 SQL 代码项列表。
-
选择 SQL 转换操作。
查看 AWS SCT 无法自动转换的 SQL 代码项列表。使用推荐的操作手动转换 SQL 代码。有关如何编辑转换的 SQL 代码的信息,请参阅 使用 AWS SCT 编辑和保存转换后的 SQL 代码。
-
(可选)将报告的本地副本另存为 PDF 文件或逗号分隔值(CSV)文件:
-
选择右上角的保存为 PDF,将报告另存为 PDF 文件。
PDF 文件包含应用程序转换的执行摘要、操作项和建议。
-
选择右上角的保存为 CSV,将报告另存为 CSV 文件。
CSV 文件包含操作项、推荐的操作以及转换 SQL 代码所需的估计人工操作的复杂性。
-
使用 AWS SCT 编辑和保存转换后的 SQL 代码
评估报告包含 AWS SCT 无法转换的 SQL 代码项的列表。对于每个项目,AWS SCT 在 SQL 转换操作选项卡上创建一个操作项。对于这些项目,您可以手动编辑 SQL 代码以执行转换。
按照以下过程编辑转换后的 SQL 代码、应用更改,然后进行保存。
编辑、应用更改并保存转换后的 SQL 代码
-
直接在 Target SQL script 窗格中编辑转换后的 SQL 代码。如果未显示转换后的代码,您可以单击窗格并开始键入。
-
编辑完转换后的 SQL 代码,请选择 Apply。此时,更改便会保存在内存中,但尚未写入您的文件。
-
选择 Save 将更改保存到文件中。
当您选择保存时,会覆盖您的原始文件。在保存之前复制您的原始文件,以便记录原始应用程序代码。