pgsql在建表语句冲设置utf8mb4字符编码
时间: 2023-12-03 16:05:27 浏览: 287
抱歉,pgsql并不支持utf8mb4字符编码。utf8mb4是MySQL中的一个字符编码,用于支持4字节的Unicode字符,而pgsql使用的是UTF-8字符编码,最多支持3字节的Unicode字符。如果你需要在pgsql中存储4字节的Unicode字符,可以考虑使用UTF-8的一个变种UTF-8mb4或者UTF-16字符编码。在pgsql中创建表时,可以使用以下语句指定字符编码:
```
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
) ENCODING = 'UTF8';
```
其中,UTF8可以替换为UTF8mb4或UTF16。
相关问题
CREATE TABLE bi_sys_role_auth_res ( pkid varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色和资源对应记录唯一id_', role_pkid varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色资源的主键role_pkid', res_pkid varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '资源记录的主键', res_type varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '资源的类型', update_user varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', update_time varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改时间 ', PRIMARY KEY (pkid) USING BTREE, UNIQUE KEY uk_pkid (pkid) USING BTREE, KEY auth_role_res_role_pkid (role_pkid) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='角色-业务资源-关系表';转换成pgsql建表语句
以下是将该 SQL 语句转换为 PostgreSQL 建表语句的结果:
```sql
CREATE TABLE bi_sys_role_auth_res (
pkid varchar(30) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '角色和资源对应记录唯一id_',
role_pkid varchar(30) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '角色资源的主键role_pkid',
res_pkid varchar(30) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '资源记录的主键',
res_type varchar(100) COLLATE "utf8mb4_general_ci" NOT NULL COMMENT '资源的类型',
update_user varchar(30) COLLATE "utf8mb4_general_ci" DEFAULT NULL COMMENT '修改人',
update_time varchar(100) COLLATE "utf8mb4_general_ci" DEFAULT NULL COMMENT '修改时间 ',
PRIMARY KEY (pkid),
UNIQUE (pkid),
CONSTRAINT auth_role_res_role_pkid UNIQUE (role_pkid)
) WITH (OIDS=FALSE)
TABLESPACE pg_default;
COMMENT ON TABLE bi_sys_role_auth_res IS '角色-业务资源-关系表';
```
由于 PostgreSQL 中没有使用 ENGINE 参数指定表引擎,因此将其移除。同时,将字符集和排序规则参数 COLLATE 放置在字段类型后面,并且将 UNIQUE KEY 转换为 UNIQUE 约束,将 KEY 转换为 CONSTRAINT。最后,添加了一些 PostgreSQL 特有的参数,如 WITH (OIDS=FALSE) 和 TABLESPACE。
PGSQL 查询语句中自定义字符集
在 PGSQL 查询语句中指定自定义字符集,可以使用 `SET CLIENT_ENCODING` 命令来设置客户端字符集,例如:
```
SET CLIENT_ENCODING TO 'UTF8';
```
这样就可以将客户端字符集设置为 UTF8。同时,如果你想在查询中使用其他字符集,可以使用 `CONVERT()` 函数将其转换为相应的字符集,例如:
```
SELECT CONVERT('你好', 'GBK', 'UTF8');
```
这样就可以将字符串 '你好' 从 UTF8 转换为 GBK 字符集。
阅读全文