如果您想将具有不同二进制页面和页大小的数据在多个平台中进行移动,并且您具有使用分布式 SQL 的经验,那么可以使用 INSERT 和 SELECT SQL 语句来传送数据。
要点: 如果数据库包含 BLOB 数据类型,那么请勿使用 INSERT 和 SELECT 语句移动数据。
先决条件:数据库服务器实例间必须存在网络连接。
要使用带有标准表名的 INSERT 和 SELECT 语句移动数据:
- 从源数据库服务器中捕获完整的数据库模式。
- 更改扩展数据块的大小,如果需要,还可以更改表的锁定方式(从页更改为行)。
- 创建和验证目标数据库服务器中的模式。
- 根据需要,禁用源服务器和目标服务器上的日志记录功能。
- 创建并运行以下脚本:
- 创建并运行用于下列操作的独立脚本:
- 禁用源服务器上的选择触发器
- 禁用针对目标数据库服务器上每个表的索引、触发器和约束。
- 为标准 INSERT 和 SELECT 语句的每个表创建并运行一个脚本。
例如:
INSERT INTO dbname@target:owner.table SELECT *
FROM dbname@source:
owner.table
可以并行运行脚本。此外,对于较大的表,可以创建多个可对表进行分区的脚本,以实现并行运行。
- 为启用每个表的索引、触发器和约束创建并运行独立脚本。
- 针对目标数据库服务器上的系统目录表、存储过程和函数运行 UPDATE STATISTICS。
- 为目标数据库服务器上具有多个串行列的所有表调整起始值。
- 在源数据库服务器和目标数据库服务器上开启事务日志记录功能。
- 向多用户方式返回源数据库服务器或目标数据库服务器。
- 验证传送至目标数据库服务器的数据。
有关 INSERT 和 SELECT 语句的信息,请参阅《GBase 8s SQL 指南:语法》。
有关分布式事务的信息,请参阅《GBase 8s 管理员指南》和《GBase 8s 管理员参考》。