当前位置: 首页 > 面试题库 >

重命名PostgreSQL中的多列

田琛
2023-03-14
问题内容

我的表有一堆列,格式如下:

_settingA
_settingB
_settingB

我想重命名它们只是添加一个前缀,如下所示:

_1_settingA
_1_settingB
_1_settingC

我有 很多 比三列更用这种方式来命名。如果我只有三个人,那我会手动一个接一个地做。

实现这一目标的最快/最有效的方法是什么?


问题答案:

…对于所有此类批量管理操作,您可以使用PostgreSQL系统表为您生成查询,而无需手动编写查询

在您的情况下,它将是:

SELECT
    'ALTER TABLE ' || tab_name || ' RENAME COLUMN '
    || quote_ident(column_name) || ' TO '
    || quote_ident( '_1' || column_name) || ';'
FROM (
    SELECT
        quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name,
        column_name
    FROM information_schema.columns  
    WHERE 
            table_schema = 'schema_name'
            AND table_name = 'table_name'
            AND column_name LIKE '\_%'
) sub;

这将为您提供一组字符串,这些字符串是SQL命令,例如:

ALTER TABLE  schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE  schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...

如果您的表在模式中,则无需使用table_schemainWHERE子句public
还请记住使用功能quote_ident()-阅读我的原始答案以获取更多说明。

编辑:

我已经更改了查询,因此现在它可用于名称以下划线开头的所有列_。因为下划线是SQL模式匹配中的特殊字符,所以我们必须对它进行转义(使用\)以准确地找到它。



 类似资料:
  • 问题内容: 在Postgresql 9.5中,是否可以重命名jsonb字段中的属性? 例如: 应该重命名为 问题答案: 在使用删除( - )并连接(||)运算符 ,如:

  • 我有一个单一的CSV文件,在其中我想重命名一些列相同的名称。我的初始代码如下所示 我用这段代码从dataframe中提取了选定的列 此切片每隔三列获取一次。现在我想用相同的名称重命名每三列一次,但这样重命名我的列会出错 有没有办法在pandas中重命名多个同名列? 除了手动操作,还有其他建议吗?

  • 问题内容: 如何重命名以下文件: 分为以下几个: 相关代码为: 问题答案: 一行可以分为:

  • 在SQL Server中,我有一个数据库< code>abc。在这个数据库中,我有数百个表。这些表格中的每一个都被称为< code>xyz.table 我想把所有的表格都改成< code>abc.table。 我们有办法将数据库< code>abc中的所有名称从< code>xyz.table更改为< code>abc.table吗? 我可以通过将每个表的模式更改为abc来手动更改名称

  • 我在这里查看了rename函数,但是,它似乎没有考虑到将多个列关联到一个要重命名的关键字的可能性。 这在熊猫体内是可行的吗? 到目前为止,我的(未工作的)尝试如下: DF示例: 预期结果:

  • 问题内容: 我正在尝试使用以下SQL表达式重命名MySQL社区服务器5.5.27中的列: 我也试过 但它说: 错误:检查与您的MySQL服务器版本相对应的手册 问题答案: 使用以下查询: 该功能在Oracle数据库中使用。 注意用于MySQL的反引号,而双引号用于Oracle的语法。 另请注意,MySQL 8.0可能不接受反引号。在这种情况下,不带反引号的情况下执行查询,它可能会起作用。 @ la