gaussDB数据库常用操作命令

GaussDB命令行连接

                1.1 ssh连接主机,IP:192.168.28.178,用户名:root,密码:Huawei @123

                1.2 切换至bin目录,cd /home/gaussdba/app/bin/

                1.3 切换用户为gaussdba,su gaussdba

                1.4 连接gaussDb,gsql -d postgres -p 5432

 

基本操作命令

                \l  列出所有数据

                \c database_name 切换数据库

                \d 列出当前数据库下的表

                \d tablename 列出指定表的所有字段

                \d+ tablename 查看指定表的基本情况

                \dn 展示当前数据库下所有schema信息

                SHOW search_path; 显示当前使用的schema

                SET search_path TO myschema; 切换当前schema

                \q 退出登录

mysql数据迁移至gaussDB

    1. 导出mysql数据

   show variables like '%secure%' 查询出secure_file_priv地址;

                在secure_file_priv地址下mkdir aaa;

                修改文件权限chmod -R 777 aaa;

    select * from i18n_message into outfile '/tmp/etl/temp.dat' fields terminated by ''';

2. 下载数据并上传至GaussDb服务器

    3. 导入gaussDb

    COPY I18N_MESSAGE FROM '/home/gaussdba/app/bin/temp.dat' WITH DELIMITER '''';

切换gaussDb中遇到的问题

​        1.  执行出现如下错误:column "TASK.TASK_ID" must appear in the GROUP BY clause or be used in an aggregate function ,原因

                是:select的字段与Group by中的字段要一致或不一致的字段必须使用聚合函数;

        2.  MySQL中的ifnull函数用nvl函数替换;

        3.  limit 0,10 ---------->limit 10 offset 0;

        4.  find_in_set(operator, '1096,789') ---------->operator ~ concat('(', replace('1096,789', ',', '|'), ')');

        5.  不支持uuid(),可以自定义UUID函数,

CREATE OR REPLACE FUNCTION UUID() 

                RETURNS TEXT AS $$

                BEGIN

                    RETURN to_number(now()::text,'99999999999999999999999999999999999999999999999');

                END;

               $$ LANGUAGE plpgsql;

                ALTER FUNCTION UUID() OWNER TO GAUSSDBA;

 6.  字符串不能用双引号""括起来,只能用单引号'',例如:SELECT "" as local_path  ----------->SELECT '' as local_path

        7.  INSERT INTO  ON DUPLICATE KEY  ------------>REPLACE INTO

        8.  模糊查询,LIKE:区分大小写,ILIKE:不区分大小写,MySQL中查询默认不区分大小写,所以可以用ILIKE替换

        9.  GaussDB中认为null和空字符''是一样的,不支持a=''这种空字符判断,必须写成a is null

        10.  GaussDB中字符串比较时,注意字段类型要一致,例如CHAR是定长的,不足的补空格,和VARCHAR类型比较时就会有问题

        11. 单引号'转义,用一个单引号转义另一个'',例如xi''an

1、连接
	gsql -h 171.44.xxx.xxx -p 25108 -d dlp_user -U dlp  -W  1234@    登录
	
2、编码	
	show server_encoding;  查看当前数据库编码  
	
3、搜索路径	
	show search_path;  查看模式搜索路径,无论如何搜索路径前两个一定是pg_temp和pg_catalog
	set search_path to my_schema,public; 将my_schema,public两个模式加入搜索路径
	
4、模式
	select current_schema; 查看数据库当前模式 
	set current_schema=my_schema;  设置当前数据库模式。
	\dn          查看所有模式及其所有者 	
	create schema my_schema authorization dlpuser; 创建schema并指定owner
	 用户只能访问属于自己schema中的数据库对象,若要访问其他人的schema中数据库对象则必须具有该schema的usage权限。
	
5、用户	
	select * from pg_user;  查看当前数据库用户 
	create user joe with password '123456';
	
6、数据库
	select datname from pg_database; 查看数据库列表
	create database my_database template template0; 参考template0新建数据库(默认template1)
	
7、表	
	select * from pg_tables;  查看当前数据库拥有的表
	select * from dba_tab_partitions;  查看当前数据库拥有的分区表
	\d+ my_schema.t_emp;  查看表的属性
	select * from my_schema.t_emp_partition partition(p1);  查看分区表P1分区数据
	
	create table my_schema.t_emp(id int)  --可以set current_schema来指定schema.不指定schema默认使用public模式
		with(orientation=column,compression=middle) --指定列存和压缩级别
		distribute by hash(id);  --指定分布方式,也可以是replication\round robin(仅适用于外表)
			--未指定分布列,系统会自动选择一个类型符合要求的作为分布列。
	
8、视图	
	select * from dba_views; 查看所有视图
	select * from user_views; 查看当前用户下的视图
	\d+ my_schema.my_view;  查看视图的属性
	create or replace view my_view select * from t1;
	
9、索引	
	select relname from pg_class where relkind='i';  查看系统和用户定义的所有索引
	\di+ my_schema.my_index;  查看索引的属性
	create index my_index on my_schema.t_emp(id);   建立索引,可以多个字段,逗号分隔
	可以创建索引的列:
		1、经常查询的。
		2、主键列。 
		3、连接列。
		4、过滤列。
		5、排序列。
		6、分组列。
		7、去重列。
	如果使用索引比使用顺序查询更快,就会自动使用索引。 
	
10、序列
	序列sequence自增不重复,所以常用作主键。 
	create table t1(id serial);   serial为4字节序列整型,后台会自动创建并维护一个序列。 
 先创建序列再使用序列:
	create sequence seq [cache 100]; cache慎用,否则序列可能不连贯自增
	create table t2(id int default nextval('seq'));
	alter sequence seq owned by t2.id; 将字段和序列关联,删除字段或表序列也删除
	
	每一次新的序列值的产生都由GTM维护,GTM作为全局唯一节点,可能存在性能瓶颈。
	多节点下只有GTM上和最近更新序列值的节点上的序列值是最新的。

高斯数据库应用

1.其他数据库:not like all(‘A%’,‘a%’)
对应高斯数据库:not like all ( array[A%’,‘a%’])

2.在高斯数据库中,qualify是无法识别的,需要转换为rownumber进行排序,然后利用where条件进行排序的筛选达到qualify的效果。

3.在高斯数据库中,substr的使用时,必须将参数写全,例如: substr(‘123’,1,2) 三个参数需写完整,replace也需要写全。

4.在高斯数据库中,汉字字符一个字符只占一个空位,所以在截取的时候按照普通的字符串截取即可。

5.在高斯数据库中,index函数不能使用,如需判断一个字符在字符串中的位置,可以使用instr进行判断,会返回第一个字符的位置。

6.在跑批高斯脚本中,于$decodepass后加上-e即可在获取日志时获得明细。

	 
	 

  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值