如下:
select tablename,
array_to_string
(
ARRAY (
SELECT column
FROM T1 A
WHERE A.tablename = B.tablename
),
', '
) AS group_concat
FROM T1 B
group by tablename ;
2. GP数据库与Oracle数据库什么区别
你好, 操作系统的稳定对数据库来说是十分紧要的,在数据库可操作平台上,Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。对开发商来说是很大的支持。
3. gp数据库全称是什么
gp数据库全称是Creenplum。
GP数据库是业界最快最高性价比的关系型分布式数据库,它在开源的PostgreSQL的基础上采用MPP架构(Massive Parallel Processing,海量并行处理),具有强大的大规模数据分析任务处理能力,其主要关注在数据仓库和商业智能方面。
分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
GP数据库特点:
1.greenplum是一个关系型数据库集群,是由数个独立的数据库服务组合成的逻辑数据库。
2.greenplum采用Shared-Nothing架构,整个集群由很多个数据节点(Segment Sever)和控制节点(master server)组成,其中每个数据节点上可以运行多个数据库。
简单来说,Shared-Nothing是一个分布式的架构,每个节点相对独立。在典型的Shared-Nothing中,每一个节点上所有的资源(CPU,内存,磁盘)都是独立的,每个节点都只有全部数据的一部分,也只能使用本节点的资源。
4. shell怎么向gp数据库导数
fcp_login="<user>/<password>@<tnsname>"
ret_value=`sqlplus -s $fcp_login << EOF
set heading off
set feedback off
set pages 0
set trimspool on
set serverout off
VARIABLE x_outnum number;
EXECUTE importUserInfoDate1(:x_outnum);
print;
exit;
EOF`
5. GP数据库与Oracle数据库有什么区别
GP数据库与Oracle数据库区别为:侧重不同、数据库类型不同、查询不同。
一、侧重不同
1、GP数据库:GP数据库重计算的,对大数据集进行统计分析的OLAP类型。
2、Oracle数据库:Oracle数据库面向前台应用,重吞吐和高并发的OLTP类型。
二、数据库类型不同
1、GP数据库:GP数据库的数据库类型为分布式数据库。
2、Oracle数据库:Oracle数据库的数据库类型为传统关系型数据库。
三、查询不同
1、GP数据库:GP数据库支持海量数据存储,支持列的扩展,查询速度快,但是查询操作较复杂。
2、Oracle数据库:Oracle数据库虽然可以搭建集群,但是当数据量达到一定限度之后,查询处理速度会变得很慢,且对机器性能要求很高。
6. GP数据库中存储过程的RAISE NOTICE 'V_SQL:%',V_SQL;语句什么意思
1. 直接在程序中构造SQL的话后期维护, 比如表字段的增减, 有可能会影响到你SQL语句的可执行性, 那个时候你就必须要修改程序源码, 可能的结果是牵一发而动全身, 如果用存储过程, 那么只要更新存储过程就可以了, 便于维护!
2. 如果不法分子破解你的程序, 存储过程是放在你的数据库服务器上的!那么光得到你的存储过程名称, 没有实际的实现代码~~所以使用存储过程的安全性相对较高!
3. 存储过程的执行效率较高, 速度快!复杂的查询, 对速度的要求还是有讲究的!
7. gp里用什么代替oracle里rownum,用什么代替rowid
rowid在记录创建时就生成了,而且是不变的,直接指向硬件上的存储位置,能用rowid直接访问是最快的,但也是人力所无法做到的。rownum是个伪列,查询的时候除非特别指定,否则不会显示。其主要的用处是控制查询返回的行数,比如在WHERE中加ROWNUM<5,则查询结果如果在5行或以上时,只返回前4行。
(一)、概念:行的ROWID标识了该行数据的地址,ROWID包含如下信息:
数据对象编号、
该行数据,在数据文件中的块编号
该行在数据块中的位置(第一行为0)
保存该行数据的数据文件的编号(第一个数据文件为1)
ROWID在插入数据时创建,在删除数据时,删除。
不能手动设置或删除ROWID,ORACLE内部通过ROWID组建索引;
(二)、类型
1、物理ROWID:保存普通表(不含索引组织的表IOT)、聚合表(clustered table)、分区和子分区表、索引、分区和子分区索引中行的地址;
2、逻辑ROWID:保存索引组织表(IOT)的地址;
(三)、物理ROWID
1、类型:物理ROWID包含扩展ROWID与受限ROWID两类
1)、扩展ROWID(extended rowid)
支持表空间关联的数据块地址,有效标识分区表、分区索引以及普通表和索引中的行。
Oracle 8i及更高版本支持extended rowid。
2)、受限ROWID(restricted rowid)
为了向后兼容,如oracle 7及更低版本。
2、扩展ROWID(extended rowid)
a.扩展ROWID使用base64为每一行数据的物理地址进行编码,包含A-Z,a-z,0-9,+以及/。如下查询:
SQL> select rowid,dept.* from dept;
ROWID DEPTNO DNAME LOC
-------------------------------- ------------ -------------------- ----------------
AAAMfKAAEAAAAAQAAA 10 ACCOUNTING NEW YORK
AAAMfKAAEAAAAAQAAB 20 RESEARCH DALLAS
AAAMfKAAEAAAAAQAAC 30 SALES CHICAGO
AAAMfKAAEAAAAAQAAD 40 OPERATIONS BOSTON
b.扩展ROWID格式
扩展ROWID共18位,包含4部分,OOOOOOFFFBBBBBBRRR
a)000000:数据对象编号,标识了数据库中的段;
b)FFF:表空间相关的数据文件编号;
c)BBBBBB:数据文件中的数据块编号;
d)RRR:在数据块中的行编号;
c.DBMS_ROWID包
a)dbms_rowid.rowid_object通过ROWID,获取该数据的对象编号
SQL> select dbms_rowid.rowid_object('AAAMfKAAEAAAAAQAAC') as object_id from al;
OBJECT_ID
----------------
51146
b)dbms_rowid.rowid_relative_fno通过ROWID获取数据文件编号
SQL> select dbms_rowid.rowid_relative_fno('AAAMfKAAEAAAAAQAAC') as file_no from al;
FILE_NO
-------------
4
c)dbms_rowid.rowid_block_number通过ROWID,获取该数据的数据块编号
SQL> select dbms_rowid.rowid_block_number('AAAMfKAAEAAAAAQAAC') as block_number from al;
BLOCK_NUMBER
-------------------------
16
d)dbms_rowid.rowid_row_number通过ROWID,获取数据块中的行编号
SQL> select dbms_rowid.rowid_row_number('AAAMfKAAEAAAAAQAAC') as row_no from al;
ROW_NO
----------
2
3、受限ROWID(resticted rowid)
a.受限rowid用二进制表示每行数据的物理地址,当使用SQL Plus查询时,二进制表示法被转换为varchar2或16进制表示。
SQL> select dbms_rowid.rowid_to_restricted(rowid,1) as restricted_rowid,dept.* from scott.dept;
RESTRICTED_ROWID DEPTNO DNAME LOC
------------------------------- ------------- --------------------- ------------------
00000010.0000.0004 10 ACCOUNTING NEW YORK
00000010.0001.0004 20 RESEARCH DALLAS
00000010.0002.0004 30 SALES CHICAGO
00000010.0003.0004 40 OPERATIONS BOSTON
b.受限rowid格式:
共16位,包含3部分:AAAAAAAA.BBBB.CCCC
a)AAAAAAAA:保存该行数据的数据块编号
b)BBBB:该行数据在数据块中的行编号
c)CCCC:包含该行数据的数据文件编号
(四)、逻辑ROWID(logical rowid)
1、概述:索引组织的表(IOT)中,row保存在索引的叶子节点,可以在块内或块间移动。
因此,这些rows没有固定的物理地址,无法根据物理地址来唯一标识。
Oracle提供了逻辑ROWID,来标识IOT中的行,逻辑ROWID是基于表的主键;
Oracle可根据这些逻辑ROWID为IOT创建第二索引。
每个第二索引使用的逻辑ROWID都包含一个physical guess;
physical guess标识了当创建第二索引时,IOT中每个row的块位置;
8. 如何在linux 登陆gp数据库
1、在linux执行ssh-keygen -t rsa2、在~/.ssh/会生成两个文件,id_isa和id_rsa.pub将这两个文件传到安装有SecureCRT的电脑上。3、复制id_rsa.pub为authorized_keyscd ~/.sshcp id_rsa.pub authorized_keys4、authorized_keys文件可以上传到任意你想用证书登录的电脑~/.ssh5、设置SecureCRT