-
导入模板 提供两种模板导入方式: 平台支持导入其他项目的模板,用户需是其他项目中的成员,且为其他项目的“所有者”或“管理员”,预置的模板不支持导入。 在左侧导航栏选择“模板”页签,单击“导入模板”。 导入方式选择“项目”,选择项目名称,勾选需要导入的模板,可以在“导入模板名称”中修改模板名称,单击“确定”。 图1 从其他项目导入模板 平台也提供了yaml格式的数据库模板,您可以在本地编辑完成后上传至平台进行使用,数据库模板支持yaml或yml格式,且文件大小不能超过10M。 导入方式选择“上传”,单击“下载示例文件”下载数据库模板示例,编辑后上传模板文件至平台,单击“确定”。 图2 上传模板 模板示例如下: database:
name: demo # 模板名称,必填,长度范围[3,32],只能包含字母、数字、中划线、下划线,必须以字母开头
description: This is demo template # 模板描述,非必填,最大长度允许1024
columns: # 数据库列定义列表,必填,最多不能超过100个
- name: id # 列名,必填,长度[1,55],必须以字母开头,只能包含字母、数字、下划线
description: identifier # 列描述,非必填,最大长度1024
type: Long # 列类型,必填,支持Long,String,Double三种类型
nullable: false # 列是否允许为空,必填
unique: false # 列是否增加唯一约束,必填
primary: true # 列是否作为主键,必填,若有多个列设为true,则多个列组成复合主键
searchable: true # 列是否可查询,必填
tips: uuid # 列的查询提示,非必填, 若该列为可查询列,可提供查询提示
- name: user_name
description: user name
type: String
nullable: false
unique: false
primary: false
searchable: true
tips: string
- name: score
description: score
type: Double
nullable: false
unique: false
primary: false
searchable: true
tips: string
-
命令示例 本节以Windows为例介绍eihealth-toolkit的使用过程,Linux和macOS环境使用方法基本相同,可参考。 health import db template 1223454 --src-project lmx-test-01 --rename demo
# 返回结果如下
import database template finished! result is:
[
{
"source_project_id": "xxxx",
"source_template_id": "xxxx",
"destination_template_id": "",
"destination_template_name": "lmx-cli-template",
"failed_reason": "",
"status": "success"
}
]
-
请求示例 插入数据单条数据,列column1、column2、column3的值分别为1000、str2、1.1 https://eihealth.cn-north-4.myhuaweicloud.com/v1/{project_id}/eihealth-projects/{eihealth_project_id}/databases/{database_id}/data/insert
{
"column_values" : [ {
"column" : "column1",
"value" : "1000"
}, {
"column" : "column2",
"value" : "str2"
}, {
"column" : "column3",
"value" : "1.1"
} ]
}
-
URI POST /v1/{project_id}/eihealth-projects/{eihealth_project_id}/databases/{database_id}/data/insert 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128 database_id 是 String 数据库实例id 最小长度:1 最大长度:128
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限,
获取Token 接口响应消息头中X-Subject-Token的值即为Token。 最小长度:1 最大长度:32768 表3 请求Body参数 参数 是否必选 参数类型 描述 column_values 是 Array of ColumnValueDto objects 列及对应值列表 数组长度:1 - 100 表4 ColumnValueDto 参数 是否必选 参数类型 描述 column 是 String 列名 最小长度:1 最大长度:63 value 否 String 该列对应的值 最小长度:0 最大长度:1073741824
-
请求示例 数据库追加文件,追加数据为project:/file/test.csv,修改描述为simple database。 https://{endpoint}/v1/{project_id}/drug/drug-database/{database_id}
{
"description" : "simple database",
"file" : {
"source" : "PRIVATE",
"url" : "project:/file/test.csv",
"eihealth_project_id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1"
}
}
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限,获取oke n接口响应消息头中X-Subject-Token的值即为Token。 最小长度:1 最大长度:32768 表3 请求Body参数 参数 是否必选 参数类型 描述 file 是 DatabaseFile object 数据库文件。 description 否 String 数据库描述。 最小长度:0 最大长度:1024 表4 DatabaseFile 参数 是否必选 参数类型 描述 source 是 String 数据库文件来源。 枚举值: public private url 是 String 文件URL,用户私有数据中心为项目路径、公共数据场景为obs地址。 最小长度:1 最大长度:2000 eihealth_project_id 否 String 数据库文件所在项目id,仅文件为数据中心时填写。 最小长度:1 最大长度:128
-
响应示例 状态码:200 OK {
"count" : 1,
"cur_user_count" : 1,
"databases" : [ {
"id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1",
"name" : "database_name",
"status" : "ACTIVE",
"description" : "数据库ID。",
"create_time" : "2024-01-30T02:34:36Z",
"update_time" : "2024-01-30T02:53:26Z",
"creator" : "demo_user_name",
"failed_message" : "null",
"files" : [ {
"source" : "public",
"url" : "project:/test/url.csv",
"eihealth_project_id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1",
"status" : "SUC
CES S"
} ],
"columns" : [ "SMILES", "NAME" ],
"shareable" : true,
"data_num" : 500
} ]
}
-
响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 databases Array of DrugDatabaseDto objects 数据库列表。 count Integer 数据库总数。 cur_user_count Integer 当前用户数据库总数。 表5 DrugDatabaseDto 参数 参数类型 描述 id String 数据库ID。 name String 数据库名称。 type String 数据库类型。 status String 数据库状态。 description String 数据库描述。 create_time String 数据库创建时间。 update_time String 数据库更新时间。 creator String 创建数据库的用户名称。 failed_message String 失败提示,当作业执行失败时会返回。 css_id String
CSS 集群ID。 css_name String
CS S集群名称。 files Array of DetailDatabaseFile objects 数据库文件列表。 columns Array of strings 数据库列名。 shareable Boolean 是否打开组织共享。 data_num Integer 分子数量。 表6 DetailDatabaseFile 参数 参数类型 描述 source String 数据库文件来源。 枚举值: public private url String 文件URL,用户私有数据中心为项目路径、公共数据场景为OBS地址。 最小长度:1 最大长度:2000 eihealth_project_id String 数据库文件所在空间ID,仅文件为数据中心时填写。 最小长度:1 最大长度:128 status String 数据库文件写入状态。 failed_reason String 失败原因。
-
URI GET /v1/{project_id}/drug/databases 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128 表2 Query参数 参数 是否必选 参数类型 描述 search_key 否 String 数据库名称搜索。 最小长度:0 最大长度:128 type 否 String 数据库类型搜索。 sort_key 否 String 排序规则,目前默认时间降序,支持根据create_time|update_time。 sort_dir 否 String 排序规则,目前默认时间降序。 缺省值:desc limit 否 Integer 限制量,单次查询总量,必须由数字组成,默认为100,取值范围[1,1000]。 最小值:1 最大值:1000 缺省值:100 offset 否 Integer 偏移量,查询起始偏移,必须由数字组成,默认为0,取值范围[0,100000000]。 最小值:0 最大值:100000000 缺省值:0
-
约束限制 恢复中的实例,不可进行该操作。 只能在主库进行数据库管理,比如授权、创建账号等操作。 使用SQL语句创建数据库时,建议使用要授权的用户登录后再进行数据库创建。 目前不支持创建同名数据库。 数据库创建完成后不支持修改库名。 除RDS界面和API以外的其他方式创建的数据库和账号,也会展示在RDS界面。如果创建的数据库名和账号名不满足数据库命名规则和账号命名规则,例如包含中文或不支持的特殊字符,那么该数据库和账号不支持RDS界面或API的数据库管理和账号管理功能。 如果源库的数据库名和账号名不满足数据库命名规则和账号命名规则,迁移到目标库TaurusDB标准版后,该数据库和账号不支持RDS界面或API的数据库管理和账号管理功能。
-
查询数据库大小 查询数据库的大小。 1 select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;
示例: 1
2
3
4
5
6
7 select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;
datname | pg_size_pretty
-----------+----------------
template1 | 61 MB
template0 | 61 MB
postgres | 320 MB
(3 rows)
-
查询指定SCHEMA下的表大小及表对应索引的大小 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 SELECT
t.tablename,
indexname,
c.reltuples AS num_rows,
pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
CASE WHEN indisunique THEN 'Y'
ELSE 'N'
END AS UNIQUE,
idx_scan AS number_of_scans,
idx_tup_read AS tuples_read,
idx_tup_fetch AS tuples_fetched
FROM pg_tables t
LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
LEFT OUTER JOIN
( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
JOIN pg_class c ON c.oid = x.indrelid
JOIN pg_class ipg ON ipg.oid = x.indexrelid
JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
AS foo
ON t.tablename = foo.ctablename
WHERE t.schemaname='public'
ORDER BY 1,2;
-
查询数据库 使用gsql的\l元命令查看数据库系统的数据库列表。 1
2
3
4
5
6
7
8
9
10 \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------
gaussdb | Ruby | SQL_ASCII | C | C |
template0 | Ruby | SQL_ASCII | C | C | =c/Ruby +
| | | | | Ruby=CTc/Ruby
template1 | Ruby | SQL_ASCII | C | C | =c/Ruby +
| | | | | Ruby=CTc/Ruby
(3 rows)
如果用户在数据库安装的时候没有指定LC_COLLATE、LC_CTYPE参数,则LC_COLLATE、LC_CTYPE参数的默认值为C。 如果用户在创建数据库时没有指定LC_COLLATE、LC_CTYPE参数,则默认使用模板数据库的排序顺序及字符分类。 详细内容可参见CREATE DATABASE参数说明。 通过系统表pg_database查询数据库列表。 1
2
3
4
5
6
7 SELECT datname FROM pg_database;
datname
-----------
template1
template0
gaussdb
(3 rows)
-
查询表分布键 使用PG_GET_TABLEDEF函数查询某个表(例如表名为customer_t1)的分布键,回显信息中的“HASH(c_last_name)”表示该表分布方式为HASH,且分布键为c_last_name。 1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT * FROM PG_GET_TABLEDEF('customer_t1');
pg_get_tabledef
-----------------------------------------------------------------------------------
SET search_path = tpchobs; +
CREATE TABLE customer_t1 ( +
c_customer_sk integer, +
c_customer_id character(5), +
c_first_name character(6), +
c_last_name character(8) +
) +
WITH (orientation=column, compression=middle, colversion=2.0, enable_delta=false)+
DISTRIBUTE BY HASH(c_last_name) +
TO GROUP group_version1;
(1 row)
批量查询多个表的分布方式和分布键,使用以下SQL语句。语句末尾的dbadmin替换为实际的表owner,以下示例为查询dbadmin创建的所有表的分布方式和分布键。 下图回显的distribute_type表示分布方式,例如HASH;distributekey表示分布键,例如ca_address_sk。 1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT pg_catalog.pg_get_userbyid(pc.relowner) AS tableowner,
pn.nspname AS schemaname,
pc.relname AS tablename,
CASE pxc.pclocatortype WHEN 'N' THEN
'ROUND ROBIN' WHEN 'R' THEN
'REPLICATION' WHEN 'H' THEN
'HASH' WHEN 'M' THEN
'MODULO' END AS distribute_type,
pc.relkind,
getdistributekey(pxc.pcrelid) AS distributekey,
pc.reloptions
FROM pgxc_class pxc, pg_class pc,pg_namespace pn
WHERE pxc.pcrelid = pc.oid AND pn.oid=pc.relnamespace AND tableowner='dbadmin';