部署:华为云MPP(DWS)

下面介绍的开发环境为 postgresql 10.4 ;

初始操作参考官方文档.

遇到的问题

1.数据库编码

默认的编码不是 UTF-8 如果有需要

1
2
create
database encoding 'UTF8' template = owner to users;

2.分布列

MPP 在表结构中, 有一个分布列的概念, 默认为主键, 否为为当前表的第一个字段.

如果没有主键的表, 可以指定分布列.

数据存储方式为 行存储.

备份的表结构中会有特殊 SQL参数, 不一定能还原到开发环境.

解决方法:

  1. 单独备份表结构与数据
  2. 对结构进行修改, 还原表结构
  3. 还原数据

3.数据存储长度

在我们开发环境中, varchar(4) 是可以存储 4个汉字的, 但是在MPP中, 根据官方文档介绍, 只能存1汉字.

也就是说, 在开发库还原到线上之前, 需要对数据的长度进行一次处理.

可以根据下面的系统表查询出所需要修改的字段, 进行统一修改:

1
2
3
4
select table_name, column_name, data_type, character_maximum_length
from infomation_schema.columns
where table_schema = 'schema_name'
and data_type in ('character', 'character varying');

4.数据类型

判断条件中的 flag=true 是错误的.

本文地址: https://github.com/maxzhao-it/blog/post/51475/