首先,想吐槽一下这个数据库,为什么硬要整点和别人不一样的东西,实现相同的功能,就遵循已有的规律其实更容易被大家所接受,不需要通过这个差异来标榜或者突出自己吧。真的是给人浪费人好多时间。
在常规的数据库中,我们在管理数据或表的时候,如果需要对表做一些操作,常规方案都会是先建立备份表,先在备份表中进行,然后才会把指定操作用在正式表中,所以备份表就成了必需要做的事情,常规备份表我们一般会选择这样的方式:
create table table_name as select * from table_name_b;
但是在gbase中有一些差别,其去掉了as。
create table table_name select * from table_name_b;
可能是因为gbase是收费的,所以其用户社区没有很活跃,导致一些资料在查找时需要花费较多时间。其实关于gbase的常规sql语法可以在其官网中下载文档查看(就很离谱)。有这功夫,我还查半天干嘛,我直接看文档就好了,关键文档中的目录信息又无法直接定位到你想要看到的信息。算了,不想说了,就一点差异而已。
在其他的数据库中,如果只是想要复制表结构,一般我们会选择使用
create table table_name as select * from table_name_b where 1 > 2;
在gbase中提供了只复制表结构的方案
create table table_name like table_name_b
在gbase中show create table table_name;语句可以把建表语句直接导出,和mysql,sqlite一致。而pg数据库中是不支持的。
昨天在gbase中运行了update table set a = b from b where ...语句,发现也是不支持的,列存储数据库对于数据的更改还是比较困难一些,但是好像是提供了一个merge语句。在这种环境下,这种场景如果换一种方式实现,建议就还是利用create select * 方式把所有需要的信息放在一张新表里,把新表名字改成目标表,相对而言会更快。其实本质就是使用建立临时表的方法。
gbase使用和mysql很类以,包括python连接gbase用的包也是pymysql。