使用 AWS Schema Conversion Tool 转换 Informatica ETL 脚本
您可以使用 AWS SCT 命令行界面(CLI)转换 Informatica ETL 脚本,以便可以在新的目标数据库中使用这些脚本。此转换包括三个关键步骤。首先,AWS SCT 转换嵌入在 Informatica 对象中的 SQL 代码。接下来,AWS SCT 会根据您在项目中指定的迁移规则更改数据库对象的名称。最后,AWS SCT 会将 Informatica ETL 脚本的连接重定向到新的目标数据库。
您可以将 Informatica ETL 脚本作为 AWS SCT 数据库转换项目的一部分进行转换。在转换 Informatica ETL 脚本时,请务必将源数据库和目标数据库添加到项目中。
要转换 Informatica ETL 脚本,请确保使用 AWS SCT 版本 1.0.667 或更高版本。另外,请熟悉 AWS SCT 的命令行界面。有关更多信息,请参阅 有关 AWS Schema Conversion Tool 的 CLI 参考。
使用 AWS SCT 转换 Informatica ETL 脚本
-
创建新的 AWS SCT CLI 脚本或编辑现有场景模板。例如,您可以下载和编辑
InformaticConversionTemplate.scts模板。有关更多信息,请参阅 获取 CLI 场景。 -
下载源数据库和目标数据库所需的 JDBC 驱动程序。使用
SetGlobalSettings命令指定这些驱动程序的位置。此外,还要指定 AWS SCT 可以保存日志文件的文件夹。以下代码示例向您展示了如何将 Oracle 和 PostgreSQL 驱动程序的路径添加到 AWS SCT 设置中。运行此代码示例后,AWS SCT 将日志文件存储在
C:\sct_log文件夹中。此外,AWS SCT 还会将控制台日志文件存储在C:\Temp\oracle_postgresql文件夹中。SetGlobalSettings -save: 'true' -settings: '{"oracle_driver_file": "C:\\drivers\\ojdbc8.jar", "postgresql_driver_file": "C:\\drivers\\postgresql-42.2.19.jar" }' / SetGlobalSettings -save: 'false' -settings: '{ "log_folder": "C:\\sct_log", "console_log_folder": "C:\\Temp\\oracle_postgresql"}' / -
创建新 AWS SCT 项目。输入项目的名称和位置。
以下代码示例在
C:\Temp文件夹中创建oracle_postgresql项目。CreateProject -name: 'oracle_postgresql' -directory: 'C:\Temp' / -
添加有关源数据库和目标数据库的连接信息。
以下代码示例将 Oracle 和 PostgreSQL 数据库添加为 AWS SCT 项目的源和目标。
AddSource -password: 'source_password' -port: '1521' -vendor: 'ORACLE' -name: 'ORACLE' -host: 'source_address' -database: 'ORCL' -user: 'source_user' / AddTarget -database: 'postgresql' -password: 'target_password' -port: '5432' -vendor: 'POSTGRESQL' -name: 'POSTGRESQL' -host: 'target_address' -user: 'target_user' /在前面的示例中,将
source_user和target_user替换为数据库用户的名称。接下来,用您的密码替换source_password和target_password。在source_address和target_address中,输入源数据库服务器和目标数据库服务器的 IP 地址。要连接到版本 19 及更高版本的 Oracle 数据库,请在
AddSource命令中使用 Oracle 服务名称。为此,请添加-connectionType参数并将其值设置为'basic_service_name'。然后,添加-servicename参数并将其值设置为 Oracle 服务名称。有关AddSource命令的更多信息,请参阅《AWS Schema Conversion Tool CLI 参考》https://s3.amazonaws.com/publicsctdownload/AWS+SCT+CLI+Reference.pdf。 -
创建新的 AWS SCT 映射规则,该规则定义每个源数据库架构的目标数据库引擎。有关更多信息,请参阅 在 AWS Schema Conversion Tool 中映射数据类型。
以下代码示例创建了一个包含所有源 Oracle 数据库架构的映射规则,并将 PostgreSQL 定义为迁移目标。
AddServerMapping -sourceTreePath: 'Servers.ORACLE' -targetTreePath: 'Servers.POSTGRESQL' / -
添加有关 Informatica 源文件和目标 XML 文件的连接信息。
以下代码示例添加了
C:\Informatica_source和C:\Informatica_target文件夹中的 Informatica XML 文件。AddSource -name: 'INFA_SOURCE' -vendor: 'INFORMATICA' -mappingsFolder: 'C:\Informatica_source' / AddTarget -name: 'INFA_TARGET' -vendor: 'INFORMATICA' -mappingsFolder: 'C:\Informatica_target' / -
创建另一条映射规则,为源 Informatica XML 文件定义目标 Informatica XML 文件。
以下代码示例创建了一个映射规则,该规则包括前面示例中使用的源 Informatica XML 文件和目标 Informatica XML 文件。
AddServerMapping -sourceTreePath: 'ETL.INFA_SOURCE' -targetTreePath: 'ETL.INFA_TARGET' / -
指定与 Informatica 连接名称引用对应的数据库服务器连接。
以下代码示例配置了将 Informatica ETL 脚本从源数据库重定向到新目标数据库的过程。此示例还配置了连接变量。
ConfigureInformaticaConnectionsRedirect -treePath: 'ETL.INFA_SOURCE.Files' -connections: '{ "ConnectionNames": [ { "name": "Oracle_src", "newName": "postgres", "treePath": "Servers.ORACLE" } ] "ConnectionVariables": [ { "name": "$Source", "treePath": "Servers.ORACLE" } ] }' / -
转换源数据库架构和 Informatica ETL 脚本。
以下代码示例转换您的所有源 Oracle 数据库架构和 Informatica XML 文件。
Convert -treePath: 'Servers.ORACLE.Schemas.%' / Convert -treePath: 'ETL.INFA_SOURCE.Files' / -
(可选)保存转换项目和评估报告。该报告包括转换操作项以及有关如何解决每个问题的建议。
以下代码示例保存您的项目,并将评估报告的副本作为 PDF 文件保存到
C:\Temp文件夹中。SaveProject / SaveReportPDF -treePath: 'ETL.INFA_SOURCE.Files' -file:'C:\Temp\Informatica.pdf' / -
保存转换后的 Informatica XML 文件。
以下代码示例将转换后的 XML 文件保存在
C:\Temp文件夹中。您在上一步中使用AddTarget命令指定了此文件夹。SaveTargetInformaticaXML -treePath: 'ETL.INFA_TARGET.Files' / -
将您的脚本保存为
.scts文件,然后使用 AWS SCT CLI 中的RunSCTBatch命令运行它。有关更多信息,请参阅 AWS SCT CLI 脚本模式。以下示例运行
C:\Temp文件夹中的Informatica.scts脚本。您可以在 Windows 中使用这个示例。RunSCTBatch.cmd --pathtoscts "C:\Temp\Informatica.scts"如果编辑源 Informatica ETL 脚本,请再次运行 AWS SCT CLI 脚本。