DEFAULT
alter table增加列包含not null约束时,如果无default值,在MySQL中会插入默认值,而在DWS中插入到非空表时会报错,因此针对常见数据类型,alter table add column包含not null约束补充默认default值(详情见表1)。
输入示例
       1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
      
       DROP TABLE IF EXISTS default_test_1; CREATE TABLE default_test_1 ( c1 tinyint, c2 smallint, c3 MEDIUMINT, c4 int, c5 bigint ); INSERT INTO default_test_1 VALUES (1, 1, 1, 1, 1); SELECT * FROM default_test_1; ALTER TABLE default_test_1 add COLUMN (c1_1 tinyint not null, c2_1 SMALLINT not null, c3_1 MEDIUMINT not null, c4_1 int not null, c5_1 BIGINT not null); SELECT * FROM default_test_1;  | 
     
输出示例
       1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  | 
      
       DROP TABLE IF EXISTS "public"."default_test_1"; CREATE TABLE "public"."default_test_1" ( "c1" SMALLINT, "c2" SMALLINT, "c3" INTEGER, "c4" INTEGER, "c5" BIGINT ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("c1"); INSERT INTO "public"."default_test_1" VALUES (1, 1, 1, 1, 1); SELECT * FROM default_test_1; ALTER TABLE "public"."default_test_1" ADD COLUMN "c1_1" SMALLINT NOT NULL DEFAULT 0, ADD COLUMN "c2_1" SMALLINT NOT NULL DEFAULT 0, ADD COLUMN "c3_1" INTEGER NOT NULL DEFAULT 0, ADD COLUMN "c4_1" INTEGER NOT NULL DEFAULT 0, ADD COLUMN "c5_1" BIGINT NOT NULL DEFAULT 0; SELECT * FROM default_test_1;  | 
     
| 
       数据类型  | 
     
       MYSQL  | 
     
       DWS对应数据类型  | 
     
       转换结果  | 
    
|---|---|---|---|
| 
       有符号整型  | 
     
       TINYINT  | 
     
       SMALLINT  | 
     
       0  | 
    
| 
       SMALLINT  | 
     
       SMALLINT  | 
     
       0  | 
    |
| 
       MEDIUMINT  | 
     
       INT/INTEGER  | 
     
       0  | 
    |
| 
       INT/INTEGER  | 
     
       INT/INTEGER  | 
     
       0  | 
    |
| 
       BIGINT  | 
     
       BIGINT  | 
     
       0  | 
    |
| 
       无符号整型  | 
     
       TINYINT UNSIGNED  | 
     
       TINYINT  | 
     
       0  | 
    
| 
       SMALLINT UNSIGNED  | 
     
       INT  | 
     
       0  | 
    |
| 
       MEDIUMINT UNSIGNED  | 
     
       INT  | 
     
       0  | 
    |
| 
       INT UNSIGNED  | 
     
       BIGINT  | 
     
       0  | 
    |
| 
       BIGINT UNSIGNED  | 
     
       NUMERIC  | 
     
       0  | 
    |
| 
       浮点型  | 
     
       FLOAT  | 
     
       REAL  | 
     
       0  | 
    
| 
       FLOAT UNSIGNED  | 
     
       REAL  | 
     
       0  | 
    |
| 
       DOUBLE  | 
     
       DOUBLE PRECISION  | 
     
       0  | 
    |
| 
       DOUBLE UNSIGNED  | 
     
       DOUBLE PRECISION  | 
     
       0  | 
    |
| 
       DOUBLE PRECISION (DOUBLE)  | 
     
       DOUBLE PRECISION  | 
     
       0  | 
    |
| 
       DOUBLE PRECISION [UNSIGNED] (DOUBLE)  | 
     
       DOUBLE PRECISION  | 
     
       0  | 
    |
| 
       REAL(默认按double处理, 设置REAL_AS_FLOAT时,按float处理)  | 
     
       REAL/DOUBLE PRECISION  | 
     
       0  | 
    |
| 
       REAL [UNSIGNED](默认按double处理, 设置REAL_AS_FLOAT时,按float处理)  | 
     
       REAL/DOUBLE PRECISION  | 
     
       0  | 
    |
| 
       NUMERIC/DECIMAL  | 
     
       NUMERIC/DECIMAL  | 
     
       0  | 
    |
| 
       布尔类型  | 
     
       BOOLEAN/BOOL  | 
     
       BOOLEAN  | 
     
       0  | 
    
| 
       字符类型  | 
     
       CHAR/CHARACTER  | 
     
       CHAR/CHARACTER * 4  | 
     
       空字符串  | 
    
| 
       NCHAR  | 
     
       CHAR/CHARACTER * 4  | 
     
       空字符串  | 
    |
| 
       VARCHAR  | 
     
       VARCHAR * 4  | 
     
       空字符串  | 
    |
| 
       文本类型  | 
     
       TINYTEXT  | 
     
       TEXT  | 
     
       空字符串  | 
    
| 
       TEXT  | 
     
       TEXT  | 
     
       空字符串  | 
    |
| 
       MEDIUMTEXT  | 
     
       TEXT  | 
     
       空字符串  | 
    |
| 
       LONGTEXT  | 
     
       TEXT  | 
     
       空字符串  | 
    |
| 
       二进制类型  | 
     
       BINARY  | 
     
       BYTEA  | 
     
       空字符串  | 
    
| 
       VARBINARY  | 
     
       BYTEA  | 
     
       空字符串  | 
    |
| 
       TINYBLOB  | 
     
       BYTEA(列存)/BLOB(非列存)  | 
     
       空字符串  | 
    |
| 
       BLOB  | 
     
       BYTEA(列存)/BLOB(非列存)  | 
     
       空字符串  | 
    |
| 
       MEDIUMBLOB  | 
     
       BYTEA(列存)/BLOB(非列存)  | 
     
       空字符串  | 
    |
| 
       LONGBLOB  | 
     
       BYTEA(列存)/BLOB(非列存)  | 
     
       空字符串  | 
    |
| 
       CHAR BYTE(BINARY)  | 
     
       BYTEA  | 
     
       空字符串  | 
    |
| 
       日期类型  | 
     
       DATE  | 
     
       DATE  | 
     
       1970-01-01  | 
    
| 
       TIME  | 
     
       TIME(P) WITHOUT TIME ZONE  | 
     
       00:00:00  | 
    |
| 
       DATETIME  | 
     
       TIMESTAMP WITHOUT TIME ZONE  | 
     
       1970-01-01 00:00:00  | 
    |
| 
       TIMESTAMP  | 
     
       TIMESTAMP(P) WITH TIME ZONE  | 
     
       1970-01-01 00:00:00  | 
    |
| 
       datetime/datetime(0)  | 
     
       datetime->timestamp with out time zone datetime(0)->timestamp(0) with out time zone  | 
     
       1970-01-01 00:00:00.xx(x个数与精度位数有关)  | 
    |
| 
       YEAR  | 
     
       SMALLINT  | 
     
       0000  | 
    |
| 
       位串类型  | 
     
       BIT  | 
     
       BIT  | 
     
       DEFAULT 0:: BIT(x)  | 
    
| 
       集合类型  | 
     
       ENUM  | 
     
       CHARACTER VARYING()  | 
     
       默认第一个元素  | 
    
| 
       SET  | 
     
       CHARACTER VARYING()  | 
     
       空字符串  | 
    |
| 
       自增序列  | 
     
       SERIAL( BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE)  | 
     
       CREATE SEQUENCE serial_name INCREMENT 2 START 1  | 
     
       不作处理  | 
    
| 
       JSON类型  | 
     
       JSON  | 
     
       jsonb  | 
     
       不作处理  | 
    
| 
       空间类型  | 
     
       point  | 
     
       point  | 
     
       不做处理  | 
    
| 
       polygon  | 
     
       polygon  | 
     
       不做处理  | 
    |
| 
       geometry  | 
     
       不支持,原状返回  | 
     
       不做处理  | 
    |
| 
       linestring  | 
     
       polygon  | 
     
       不做处理  | 
    |
| 
       geometrycollection  | 
     
       不支持,原状返回  | 
     
       不做处理  | 
    |
| 
       multipoint  | 
     
       box  | 
     
       不做处理  | 
    |
| 
       multilinestring  | 
     
       box  | 
     
       不做处理  | 
    |
| 
       multipolygon  | 
     
       polygon  | 
     
       不做处理  |