返回首页

gbase数据、南大通用产品文档:GBase8s检索数据

更新日期:2024年09月11日

要检索 GBase 8s 不透明类型,必须使用 ResultSet.getObject()。GBase 8s JDBC Driver 根据
您提供的自定义类型将数据转换为 Java™ 对象。使用前面示例的 charattrUDT 类型,可以
获取此不透明数据,如下所示:
String s = "select int_col, charattr_col from charattr_tab order by 1";
System.out.println(s);

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(s);
System.out.println("execute...ok");

System.out.println("Fetching data ...");
int curRow = 0;
while (rs.next())
{
curRow++;

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 191 -

System.out.println("currentrow=" + curRow + " : ");

int intret = rs.getInt("int_col");
System.out.println(" int_col " + intret);

charattrUDT charattrret = (charattrUDT)rs.getObject("charattr_col");
System.out.print(" charattr_col ");
if (curRow == 2 || curRow == 6)
{
if (rs.wasNull())
System.out.println("");
else
System.out.println("***ERROR: " + charattrret);
}
else
System.out.println(charattrret+"");
} //while

System.out.println("total rows expected: " + curRow);
stmt.close();


GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
626
+--------------+
4 rows in set
示例2:定义的列数据类型为FLOAT(M),总位数小于等于23 时,小数部分
只保留一位有效数字,系统会自动对数字进行四舍五入。
CREATE TABLE products (a FLOAT(20),b FLOAT(28));
INSERT INTO products (a,b) VALUES(-19000.44365,-19000.44365);
gbase> SELECT * FROM products;
+----------+--------------+
| a
| b
|
+----------+--------------+
| -19000.4 | -19000.44365 |
+----------+--------------+
1 row in set
示例3:定义的列数据类型为FLOAT(20,5),指定精度为5,则小数部分保留5
位数字。
CREATE TABLE products(productnum FLOAT(20,5));
INSERT INTO products(productnum)
VALUES(19000.44365),(19000.443652);
gbase> SELECT productnum FROM products;
+-------------+
| productnum
|
+-------------+
| 19000.44336 |
| 19000.44336 |
+-------------+
2 rows in set
示例4:定义的列数据类型为FLOAT(7,4),插入的数据为999.00009 时,其近似
值就是999.0001,自动四舍五入。
CREATE TABLE products(productnum FLOAT(7,4));
INSERT INTO products(productnum) VALUES(999.00009);
gbase> SELECT productnum FROM products;
+------------+
| productnum |
+------------+
|

以主备式集群为例。
使用方式一设置数据库参数,以在数据库主节点设置archive_mode 参数为例。
(1)
以操作系统用户gbase 登录数据库主节点。
(2)
查看archive_mode 参数。
cat /home/gbase/data/dn1/dn1_1/postgresql.conf | grep archive_mode
archive_mode = on
on 表示日志要进行归档操作。
(3)
设置archive_mode 参数为off,关闭日志的归档操作。例如:
gs_guc set -D /home/gbase/data/dn1/dn1_1 -c "archive_mode=off"
说明:可以使用以下命令在数据库节点上设置archive_mode 参数为off。例如:
gs_guc set -N all -I all -c "archive_mode=off"
(4)
重启数据库使参数生效。
gha_ctl stop all -l http://:2379
gha_ctl start all -l http://:2379
(5)
使用如下命令连接数据库。
gsql -d postgres -p 15432
postgres 为需要连接的数据库名称,15432 为数据库主节点的端口号(根据实际情况指
定端口号。以下端口说明与此相同)。
连接成功后,系统显示类似如下信息:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
613
gsql ((XXXGBase8c 3.0.0BXX build d28887c9) compiled at 2022-05-13 11:31:40 commit 0
last mr 55 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
gsql=#
(6)
检查参数设置的正确性。
gsql=# SHOW archive_mode;
archive_mode
--------------
off
(1 row)
使用方式二设置参数,以在数据库主节点设置authentication_timeout 参数为例。
(1)
以操作系统用户gbase 登录数据库主节点。
(2)
查看authentication_timeout 参数。
cat /home/gbase/data/dn1/dn1_1/postgresql.conf | grep authentication_timeout
authentication_timeout = 1min
(3)
设置authentication_timeout 参数为59s。
gs_guc reload -N all -I all -c "authentication_timeout = 59s"
Total instances: 2. Failed instances: 0.
Success to perform gs_guc!
说明:可以使用以下命令在数据库节点上设置authentication_timeout 参数为59s。
gs_guc reload -N all -I all -c "authentication_timeout = 59s"
(4)
使用如下命令连接数据库。
gsql -d postgres -p 15432
postgres 为需要连接的数据库名称,15432 为数据库主节点的端口号(根据实际情况,
指定相应端口号)。
连接成功后,系统显示类似如下信息:
gsql ((XXXGBase8c 3.0.0BXX build d28887c9) compiled at 2022-05-13 11:31:40 commit 0
last mr 55 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
614
gsql=#
(5)
检查参数设置的正确性。
gsql=# SHOW authentication_timeout;
authentication_timeout
------------------------
59s
(1 row)
使用方式三设置参数,以设置explain_perf_mode 参数为例。
(1)
以操作系统用户gbase 登录数据库主节点。
(2)
使用如下命令连接数据库。
gsql -d postgres -p 15432
postgres 为需要连接的数据库名称,15432 为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((GBase8c 3.0.0BXX build d28887c9) compiled at 2022-05-13 11:31:40 commit 0 last mr
55 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
gsql=#
(3)
查看explain_perf_mode 参数。
gsql=# SHOW explain_perf_mode;
explain_perf_mode
-------------------
normal
(1 row)
(4)
设置explain_perf_mode 参数。
使用以下任意方式进行设置:
设置数据库级别的参数
gsql=# ALTER DATABASE postgres SET explain_perf_mode TO pretty;
当结果显示为如下信息,则表示设置成功。
ALTER DATABASE

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
615
在下次会话中生效。
设置用户级别的参数
gsql=# ALTER USER gbase SET explain_perf_mode TO pretty;
当结果显示为如下信息,则表示设置成功。
ALTER ROLE
在下次会话中生效。
设置会话级别的参数
gsql=# SET explain_perf_mode TO pretty;
当结果显示为如下信息,则表示设置成功。
SET
(5)
检查参数设置的正确性。
gsql=# SHOW explain_perf_mode;
explain_perf_mode
--------------
pretty
(1 row)