GBase 8s
适配迁移
问答

修改表中的列名

发表于2024-11-18 10:32:06218次浏览10个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:GBase8sV8.8_TL_3.5.1_3x_x86_64

【操作系统】:虚拟机银河麒麟v10

【CPU】:intel i7-12700h

【问题描述】*:想遍历每个表,把含有username的列名改为username2,有什么办法?

评论

登录后才可以发表评论
用户头像
liaosnet发表于 1年前
顺序:
1,从syscolumns,与systabes通过tabid关联,获取哪些表有username这个字段。
select col.colname,t.tabname
from syscolumns col, systables t
where t.tabid = col.tabid
and col.colname = 'username'
and t.tabid > 99;
2, 通过rename column语句修改字段名称
rename 表名.username to username2;
GBase用户24232发表于 1年前
@liaosnet:在修改字段名的时候报错了,怎么办?
用户头像
liaosnet发表于 1年前
@liaosnet:少写了 rename column 表名.username to username2;
GBase用户24232发表于 1年前
@liaosnet:解决了谢谢,只能一个个的rename吗,可不可以把select的都遍历再改,需要改的挺多的
用户头像
liaosnet发表于 1年前
@GBase用户24232:用存储过程,或者生成语句。然后执行。
例如:
在 dbaccess 中执行
unload to renanme_col.sql delimiter ';'
select 'rename column ' || t.tabname || '.username to username2'
from syscolumns col, systables t
where t.tabid = col.tabid
and col.colname = 'username'
and t.tabid > 99;
然后 dbaccess 库名 rename_col.sql 就好。
GBase用户24232发表于 1年前
@liaosnet:报错了,或者说 如果用存储过程怎么写呀
用户头像
liaosnet发表于 1年前
@GBase用户24232:dbaccess 是命令行中执行的。
GBase用户24232发表于 1年前
@liaosnet:不太明白,命令行这种模式怎么进入?
用户头像
liaosnet发表于 1年前
@GBase用户24232:参考下图:dbaccess testdb - 进入testdb库,执行语句
ctrl + \ 退出交互
dbaccess testdb rename_col.sql 在testdb库中执行rename_col.sql
最佳回答
GBase用户24232发表于 1年前
@liaosnet:可以提供下存储过程的写法吗,非常感谢