转换工作区

转换工作区可帮助您将源数据库中的架构和对象转换为与目标数据库兼容的 SQL 语法。本页面简要介绍了 Database Migration Service 转换工作区:

某些数据类型不支持 Oracle 迁移。如需了解详情,请参阅 数据类型的已知限制

转换进度概览

转换工作区提供全面的概览信息,您可以在其中深入了解未解决或已解决的转换问题总数、Gemini 辅助增强功能以及转换流程的总体运行状况。

转换工作区界面,其中显示了“转换概览”标签页,您可以在其中查看转换的对象数量、转换问题以及 Gemini 辅助转换增强功能。
图 1. 转换工作区概览界面,您可以在其中监控转换进度、查看问题并检查生成的 PostgreSQL 代码。(点击可放大)
转换工作区界面,其中显示了“转换概览”标签页,您可以在其中查看转换的对象数量、转换问题以及 Gemini 辅助转换增强功能。

您可以使用此视图按类型、问题严重程度、所需操作或转化状态过滤架构中的对象。

转换工作区界面,显示了如何按类型或状态过滤已转换的对象。
图 2. 按状态和对象类型过滤已转换的对象。(点击可放大)
转换工作区界面,显示了如何按类型或状态过滤已转换的对象。

如需详细了解如何使用转化概览检查转化结果,请参阅 处理转化工作区

确定性代码和架构转换

当您 创建转换工作区时,Database Migration Service 会立即使用一组确定性转换规则执行初始架构转换,其中特定的 Oracle 数据类型和对象会映射到特定的 PostgreSQL 数据类型和对象。此流程支持非常特定的可用 Oracle 数据库对象子集。

确定性代码转换支持以下 Oracle 数据库对象:

支持的 Oracle 架构元素

  • 限制条件
  • 索引(仅限在与表相同的架构中创建的索引)
  • 具体化视图
  • 对象类型(部分支持)
  • 序列
  • 同义词
  • 视图

支持的 Oracle 代码元素

  • 触发器(仅限表级)
  • 软件包
  • 函数
  • 存储过程

交互式 SQL 编辑器

借助交互式 SQL 编辑器,您可以在 Database Migration Service 中直接修改转换后的 PostgreSQL 语法。您可以使用它来修正转化问题,或调整架构以更好地满足您的需求。某些对象无法在内置编辑器中修改。

可修改的 Oracle 对象

转换源数据库代码和架构后,您可以使用交互式编辑器来修改为某些类型的对象生成的 SQL。编辑器支持以下 Oracle 对象:

  • 表触发器(需要权限)
  • 具体化视图
  • 软件包
  • 函数、存储过程
  • 同义词
  • 视图
  • 限制条件
  • 索引
  • 序列

此外,某些对象已转换,但无法在 Database Migration Service 中直接进行修改。如需修改此类对象,您需要在 应用转换后的架构和代码后直接在目标数据库中执行更新。

不支持修改的对象:

  • 用户定义的对象类型
  • 架构

使用 Gemini 加快代码和架构转换速度

Database Migration Service 将 Gemini for Google Cloud 集成到转换工作区中,可帮助您在以下方面加快并改进转换流程:

  • 借助 Gemini 支持的自动转换功能增强确定性转换结果,利用 AI 的强大功能大幅减少 PostgreSQL 代码中所需的手动调整次数。
  • 通过转换助理提供代码可解释性功能:一组专用提示,可帮助您更好地了解转换逻辑、针对转换问题提出修复建议,或优化转换后的代码。

  • 借助 Gemini 代码转换建议,加快应用修复程序来解决转换问题:一种机制,让 Gemini 模型可以在您修复转换问题时进行学习,并建议对工作区中的其他错误对象进行更改。

如需详细了解由 Gemini 提供支持的转换,请参阅以下页面:

转化对应关系文件

您可以使用转化映射文件自定义转化逻辑。转换映射文件是一个文本文件,其中包含有关如何将 Oracle 对象转换为 PostgreSQL 对象的精确说明(称为转换指令)。

支持的转化指令

Database Migration Service 支持以下转换指令,用于转换映射文件:

EXPORT_SCHEMA

EXPORT_SCHEMA 是所有转化映射文件都必须包含的指令。Database Migration Service 需要此指令,以确保您的源架构转换为正确的目标架构。 请确保您的转化映射文件包含以下代码行:

EXPORT_SCHEMA 1

SCHEMA

Database Migration Service 必须能够确定哪个架构包含应根据转换指令进行修改的对象。 SCHEMA 指令会导致您文件中提供的所有其他自定义指令应用于此特定架构中的对象。

  • 使用此指令时,数据库中包含的其他架构也会被转换,但其对象不会受到任何修改。
  • 如果您在转化映射文件中添加此指令,则所有自定义设置仅适用于此特定架构中包含的对象。
  • 如果您跳过此指令,则必须为其他转换指令修改的对象提供包含架构名称的完全限定对象名称。 例如,您需要使用 "SCHEMA_NAME.SOURCE_TABLE_NAME",而不是将 SOURCE_TABLE_NAME 用于 REPLACE_TABLES 指令。
  • 如需自定义不同架构中的对象,请尝试以下操作:
    • 为其他架构创建单独的转换映射文件,然后将其上传到转换工作区。
    • 对于位于不同于您为 SCHEMA 指令提供的架构中的对象,请使用包含架构名称的完全限定对象名称。

请使用以下格式:

SCHEMA SCHEMA_NAME

其中,SCHEMA_NAME 是源数据库中相应架构的名称。

CASE_HANDLING

默认情况下,Database Migration Service 会将所有对象名称转换为小写。 您可以使用 CASE_HANDLING 指令修改此行为。

  • 此指令不受 SCHEMA 指令的影响。 它适用于全局,并会影响转换工作区中的所有对象。
  • RENAME_*MOVE_*REPLACE_* 指令优先于 CASE_HANDLING 指令,并且会准确地重命名对象,无论 CASE_HANDLING 属性如何。
  • 如果此指令存在于多个配置文件中,且具有冲突的值,则 Database Migration Service 会在架构导入期间引发错误。

请使用以下格式:

CASE_HANDLING OPTION

其中,OPTION 可以是以下任一项:

  • UPPERCASE:将所有对象名称转换为大写。
  • LOWERCASE:将所有对象名称转换为小写形式(默认行为)。
  • PRESERVE_ORIGINAL:保留源架构中的原始大小写。如果您的应用使用区分大小写的标识符,则此功能非常有用。

示例

CASE_HANDLING PRESERVE_ORIGINAL

GENERATE_MISSING_PK

没有主键的表无法保证复制的一致性。 Database Migration Service 仅迁移具有主键的表。 默认情况下,当您 转换源代码和架构时,Database Migration Service 转换工作区会自动在目标表中创建任何缺失的主键。

您可以使用 GENERATE_MISSING_PK 指令控制主键的自动生成。如需停用自动密钥生成,请将此指令设置为 0

示例

GENERATE_MISSING_PK 0

此指令会影响特定转换工作区中的所有对象。无法仅针对特定表停用自动生成主键的功能。

Database Migration Service 只能迁移在转换后的 PostgreSQL 版本中具有主键限制条件的表。如果您停用自动主键生成功能,则需要在应用转换后的架构后,在目标数据库中转换后的表中手动创建主键或唯一性约束。展开即可下部分可查看示例 SQL 命令。

使用现有列创建主键

您的表可能已基于一个列或多个列的组合设置了逻辑主键。例如,可能存在配置了唯一性限制条件或索引的列。使用这些列为源数据库中的表生成新的主键。例如:

ALTER TABLE TABLE_NAME
ADD PRIMARY KEY (COLUMN_NAME);

使用所有列创建主键

如果您没有可作为主键的预先存在的限制条件,请使用表的所有列创建主键。确保主键的长度不超过 PostgreSQL 集群允许的最大长度。例如:

ALTER TABLE TABLE_NAME
ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);

创建此类复合主键时,您需要明确列出要使用的所有列名称。无法使用语句来检索所有列名称以实现此目的。

使用 ROWID 伪列创建唯一性限制条件

Oracle 数据库使用 ROWID 伪列来存储表中每一行的位置。如需迁移没有主键的 Oracle 表,您可以在目标 PostgreSQL 数据库中添加 ROWID 列。Database Migration Service 会使用源 Oracle ROWID 伪列中的相应数值填充该列。

如需添加列并将其设置为主键,请运行以下命令:

ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL;
CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid;
ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq');
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);

重命名对象 (RENAME_*)

您可以在转换期间重命名不同的数据库对象。 Database Migration Service 会自动更新所有代码引用(在视图、存储过程、函数等中),以使用新名称。

常规语法

RENAME_OBJECT_TYPE SOURCE_NAME1:DESTINATION_NAME1 SOURCE_NAME2:DESTINATION_NAME2 ...

重要注意事项

  • RENAME_* 指令对目标对象名称区分大小写,并且优先于 CASE_HANDLING 指令。例如,如果您同时使用以下两个指令:

    SCHEMA MySchema
    CASE_HANDLING PRESERVE_ORIGINAL
    # Destination objects are renamed exactly
    # to 'SoMe_tAbLe' and 'RenamedView', respecting the case
    # despite the CASE_HANDLING directive
    RENAME_TABLES some_table:SoMe_tAbLe
    RENAME_VIEWS MyView:RenamedView
    
  • 对于 SOURCE_NAME,请始终引用原始对象名称,即使您使用其他指令(例如 MOVE_*)也是如此。例如,如果您想重命名某个视图对象并将其移至新架构,请在两个指令中都引用原始视图名称:

    RENAME_VIEWS MyView:MyRenamedView
    MOVE_VIEWS MyView:MyOtherSchema
    
  • RENAME_TABLES 指令会替换单个文件中的 REPLACE_TABLES 指令。 如果您想同时重命名和移动表格,建议您改用 MOVE_* 指令。
  • SOURCE_NAME 变量的完整格式取决于您是否还使用了 SCHEMA 指令:

    • 使用 SCHEMA 指令:使用非限定名称,例如 MyTable
    • 不使用 SCHEMA 指令:使用完全限定名称,例如 MySchema.MyTable

支持的 RENAME_* 指令

  • RENAME_SCHEMA:重命名架构。
    单个配置文件只能包含一个 RENAME_SCHEMA 指令。如果提供了 SCHEMA 指令,RENAME_SCHEMA 只能重命名该特定架构。
  • RENAME_TABLES:重命名表。替换同一文件中的 REPLACE_TABLES
  • RENAME_COLUMNS:重命名表中的列。 替换同一文件中的 REPLACE_COLS 指令。 请使用以下格式:
    RENAME_COLUMNS TABLE1.SRC_COL:DEST_COL TABLE2.SRC_COL:DEST_COL

    如果您使用 SCHEMA 指令,请使用非限定表名称。如果您不使用 SCHEMA 指令,请添加完全限定的表名称,例如 SCHEMA.TABLE1

  • RENAME_VIEWS
  • RENAME_MATERIALIZED_VIEWS
  • RENAME_SEQUENCES
  • RENAME_FUNCTIONS
  • RENAME_STORED_PROCEDURES
  • RENAME_TRIGGERS
  • RENAME_PACKAGES:Database Migration Service 将 Oracle 软件包转换为 PostgreSQL 架构。如果您的架构包含名称相同的软件包,PostgreSQL 代码在尝试创建两个同名架构时可能会遇到名称冲突。 您可以使用此指令来避免此类冲突。

    例如,如果您有 SALES.REPORTING_PKGHR.REPORTING_PKG 等软件包,您可以将它们重命名为不同的名称:

    RENAME_PACKAGES SALES.UTILS:SALES_UTILS
    RENAME_PACKAGES HR.UTILS:HR_UTILS
    
  • RENAME_USER_DEFINED_TYPES

    可用的别名:RENAME_UDTS

移动对象 (MOVE_*)

您可以将对象移动到目标数据库中的不同架构。 这有助于在迁移期间重新组织数据库结构。Database Migration Service 会自动更新视图、存储过程、函数等中的所有代码引用。

常规语法

MOVE_OBJECT_TYPE SOURCE_NAME1:DESTINATION_SCHEMA1 SOURCE_NAME2:DESTINATION_SCHEMA2 ...

重要注意事项

  • 对于 SOURCE_NAME,请始终引用原始对象名称,即使您使用其他指令(例如 RENAME_*)也是如此。例如,如果您想重命名某个视图对象并将其移至新架构,请在两个指令中都引用原始视图名称:

    RENAME_VIEWS MyView:MyRenamedView
    MOVE_VIEWS MyView:MyOtherSchema
    
  • 该指令仅接受 DESTINATION_SCHEMA 名称,而不接受完整的对象名称。
  • SOURCE_NAME 变量的完整格式取决于您是否还使用了 SCHEMA 指令:

    • 使用 SCHEMA 指令:使用非限定名称,例如 MyTable
    • 不使用 SCHEMA 指令:使用完全限定名称,例如 MySchema.MyTable

支持的 MOVE_* 指令

  • MOVE_TABLES:将表移至其他架构。 优先于单个配置文件中的架构更改的 REPLACE_TABLES
  • MOVE_VIEWS
  • MOVE_MATERIALIZED_VIEWS
  • MOVE_SEQUENCES
  • MOVE_FUNCTIONS
  • MOVE_STORED_PROCEDURES
  • MOVE_USER_DEFINED_TYPES

    可用的别名:MOVE_UDTS

示例:重新组织架构

SCHEMA LegacyApp

# Moves the 'LegacyApp.Users' and 'LegacyApp.Orders' tables
# to the 'data' schema.
MOVE_TABLES Users:data Orders:data

# Moves the 'LegacyApp.CreateUser' and 'LegacyApp.ProcessOrder'
# stored procedures to the 'api' schema
MOVE_STORED_PROCEDURES CreateUser:api ProcessOrder:api

# Moves the 'LegacyApp.SalesSummary' views to the 'reporting' schema
MOVE_VIEWS SalesSummary:reporting

DATA_TYPE

您可以使用此指令在 Oracle 和 PostgreSQL 语法之间显式映射任何受支持的数据类型。此指令需要以英文逗号分隔的映射列表。整个定义必须在单行中提供,但您可以在配置文件中包含多个 DATA_TYPE 指令。请使用以下格式:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

其中,ORACLE_DATA_TYPEPGSQL_DATA_TYPE 是您在迁移中使用的相应 Oracle 和 PostgreSQL 版本支持的数据类型。如需了解支持的版本,请参阅 方案概览

示例

DATA_TYPE REAL:double precision,SMALLINT:integer

如需详细了解 Oracle 和 PostgreSQL 数据类型,请参阅:

MODIFY_TYPE

借助 MODIFY_TYPE 指令,您可以控制 Database Migration Service 将源表中的特定列转换为哪种数据类型。 此指令需要以英文逗号分隔的映射列表。 整个定义必须在单行中提供,但您可以在配置文件中包含多个 MODIFY_TYPE 指令。请使用以下格式:

MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE
MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...

其中:

  • SOURCE_TABLE_NAME 是包含要更改数据类型的列的表的名称。
  • COLUMN_NAME 是您要自定义转化映射的列的名称。
  • EXPECTED_END_RESULT_DATA_TYPE 是您希望转换后的列使用的数据类型(PostgreSQL 数据类型)。

示例

MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT

PG_INTEGER_TYPE

默认情况下,Database Migration Service 会将 NUMBER(p,s) 类型转换为 PostgreSQL DECIMAL(p,s) 类型。

您可以使用 PG_INTEGER_TYPE 指令修改此行为。将其值设置为 1,并强制将所有具有精度和标度 (NUMBER(p,s)) 的 NUMBER 类型转换为 PostgreSQL smallintintegerbigint 类型(具体取决于精度位数)。

在转化映射文件中添加以下设置:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

如果您想将所有具有精度和标度 (NUMBER(p,s)) 的 NUMBER 类型转换为 PostgreSQL realfloat 类型(根据其精度位数),请将此指令设置为 1

如果您将此指令设置为 0NUMBER(p,s) 值将保留其确切的原始值,并使用内部 PostgreSQL 数据类型。

在转化映射文件中添加以下设置:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

不带精度的 NUMBER 的默认转换会更改您是否也使用 PG_INTEGER_TYPE 指令

  • 如果您使用 PG_INTEGER 指令,则不带精度的 NUMBER 会转换为 DECIMAL 值。
  • 如果您使用 PG_INTEGER 指令,则没有精度的 NUMBER 会转换为 BIGINT 值。

您可以修改此行为,并使用 DEFAULT_NUMERIC 指令来指定应为未指定精度点的 NUMBER 类型使用的数据类型。 请使用以下格式:

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

其中,POSTGRESQL_NUMERIC_DATA_TYPE 是以下值之一:integersmallintbigint

示例

DEFAULT_NUMERIC integer

REPLACE_COLS

您可以使用 REPLACE_COLS 指令重命名转换后的架构中的列。此指令需要一个以英文逗号分隔的映射列表。

请使用以下格式:

REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...

其中:

  • SOURCE_TABLE_NAME 是包含您要更改其名称的列的表的名称。如果您不使用 SCHEMA 指令,请务必使用完全限定的表名称:SCHEMA_NAME.SOURCE_TABLE_NAME
  • SOURCE_COLUMN_NAME 是您要更改名称的来源中的列的名称。
  • DESTINATION_COLUMN_NAME 是您要在转换后的架构中使用的列的新名称。

示例

REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)

REPLACE_TABLES

您可以使用 REPLACE_TABLES 指令重命名表或将其移至新架构。此指令需要一个以空格分隔的映射列表。如需详细了解每种使用情形的语法,请展开即可下部分。

如果您不使用 SCHEMA 指令,请确保在引号中为源变量和目标变量使用完全限定的表名称:

  • "SCHEMA_NAME.SOURCE_TABLE_NAME"
  • "SCHEMA_NAME.DESTINATION_TABLE_NAME"

重命名表

如需重命名转换后的架构中的表,请使用以下格式:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

其中:

  • SOURCE_TABLE_NAME 是您要在转换后的架构中重命名的源表的名称。
  • DESTINATION_TABLE_NAME 是您要在转换后的架构中使用的表的新名称。

示例

REPLACE_TABLES "events:login_events" "users:platform_users"

在架构之间移动表

您可以使用此指令将表从一个架构移至另一个架构,只需将架构前缀添加到新表名称中即可。无论您如何为整个转化文件使用 SCHEMA 指令,都可以使用此机制。 例如:

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

用于自定义数据类型的别名

当您使用转换指令来修改 Database Migration Service 转换不同数据类型的方式时(例如,使用 DATA_TYPE MODIFY_TYPE PG_NUMERIC_TYPE 指令),可以使用别名而不是源 SQL 数据类型。

展开即可下部分,查看 Database Migration Service 支持的数据类型别名列表。

数据类型别名

别名 转换为 PostgreSQL 类型
bigintint8 BIGINT
boolboolean BOOLEAN
bytea BYTEA
charcharacter CHAR
character varyingvarchar VARCHAR
date DATE
decimalnumeric DECIMAL
double precisionfloat8 DOUBLE PRECISION
realfloat4 REAL
intintegerint4 INTEGER
int2 SMALLINT
interval INTERVAL
json JSON
smallint SMALLINT
text TEXT
time TIME
timestamp TIMESTAMP
timestamptz TIMESTAMPTZ
timetz TIMETZ
uuid UUID
XML XML

转化映射文件示例

请参阅以下示例转化映射文件,其中使用了一些受支持的架构转换指令:

EXPORT_SCHEMA 1
SCHEMA root

# Preserve original casing for all objects
CASE_HANDLING PRESERVE_ORIGINAL

# Data type conversions
PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC integer
DATA_TYPE NUMBER(4\,0):integer
MODIFY_TYPE events:dates_and_times:TIMESTAMP

# Renaming objects using the RENAME_* directives
# These allow case-sensitive destination names
RENAME_TABLES events:LoginEvents users:PlatformUsers
RENAME_COLUMNS events.dates_and_times:EventDates users.pseudonym:Nickname
RENAME_VIEWS InternalReport:FinInternalReport

# Moving objects to new schemas using the MOVE_* directives
MOVE_TABLES audit_log:archive
MOVE_VIEWS InternalReport:reporting

使用此文件的结果如下:

  • EXPORT_SCHEMA 1 是必需的指令。
  • SCHEMA root 会导致其他指令应用于 root 架构中的对象,除非使用完全限定名称。
  • CASE_HANDLING PRESERVE_ORIGINAL 可确保来源 root 架构中的所有对象名称在目标中保留其原始大小写(除非被 RENAME_* 指令覆盖)。
  • PG_INTEGER_TYPE 1 使 Database Migration Service 将 root 架构中的表内找到的所有 Oracle 数值数据类型转换为特定于 PostgreSQL 的类型,而不是 ANSI 可移植数值类型。
  • DEFAULT_NUMERIC integer 会导致 Database Migration Service 将没有指定精度点的 NUMBER 值转换为 PostgreSQL INTEGER 类型。
  • DATA_TYPE NUMBER(4\,0):integer 导致 Database Migration Service 将特定 NUMBER(4,0) 值转换为 PostgreSQL INTEGER
  • MODIFY_TYPE events:dates_and_times:TIMESTAMP 指令会导致 Database Migration Service 将 events 源表中 dates_and_times 列中的数据专门转换为 PostgreSQL TIMESTAMP 类型。
  • RENAME_TABLES events:LoginEvents users:PlatformUsers 重命名表,保留指定的大小写:
    • 已将 events 表重命名为 LoginEvents
    • 已将 users 表重命名为 PlatformUsers
  • RENAME_COLUMNS events.dates_and_times:EventDates user.pseudonym:Nickname 重命名列,并在目标中保留指定的大小写:
    • LoginEvents 表(原名称为 events)中,列 dates_and_times 重命名为 EventDates
    • PlatformUsers(原名称 users)列中,pseudonym 已重命名为 Nickname
  • RENAME_VIEWS InternalReport:FinInternalReport 将视图 InternalReport 重命名为 FinInternalReport
  • MOVE_TABLES audit_log:archiveroot 架构中的 audit_log 表移至 archive 架构。
  • MOVE_VIEWS InternalReport:reportingInternalReport 视图移至 reporting 架构。 由于 RENAME_VIEWS 指令,此视图也会重命名为 FinInternalReport。Database Migration Service 会处理依赖关系:先重命名对象,然后再移动对象。

旧版转换工作区

旧版转换工作区是一种较旧且功能更有限的转换工作区。旧版转换工作区不支持 Gemini 增强型转换功能或交互式 SQL 编辑器。您只能使用它们通过 Ora2Pg 迁移工具转换源架构。

我们不建议您在迁移中使用旧版转化工作区。如果您的方案需要使用旧版转化工作区,请参阅 使用旧版转化工作区

后续步骤

如需了解如何使用转换工作区,请参阅: