zoukankan      html  css  js  c++  java
  • PostgreSQL 大小写问题 一键修改表名、字段名为小写 阅读模式


    标准的SQL是不区分大小写的。但是PostgreSQL对于数据库中对象的名字允许使用支持大小写区分的定义和引用方法。方式就是在DDL中用双引号把希望支持大小的对象名括起来。
    比如希望创建一个叫AAA的表。如果用CREATE TABLE AAA (...);的话,创建出来的表实际上是aaa。
    如果希望创建大写的AAA表的话,就需要用CREATE TABLE "AAA" (...);这种双引号的方式定义对象名。
    这样写的缺点是查询语句必须也使用双引号的方式引用对象名。比如SELECT * FROM "AAA";否则PostgreSQL缺省会去找aaa这个对象,然后返回aaa不存在的错误。需要注意的是不仅仅是表可以这样定义和引用,对PostgreSQL中的任意对象(比如列名,索引名等)都有效。


    创建exec(sqlstring)函数方便执行

    CREATE OR REPLACE FUNCTION "public"."exec"("sqlstring" varchar)
      RETURNS "pg_catalog"."varchar" AS $BODY$
        declare
            res varchar(50);
        BEGIN
            EXECUTE sqlstring;
            RETURN 'ok';
        END
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100


    通过条件拼接SQL,修改某表 column为小写

    -- 根据条件查询qrtz_calendars表,所有大写的column
    select * from information_schema.columns where table_schema = 'public' and table_name = 'qrtz_calendars'
    
    -- 修改条件后,通过下列语句转换column_name中的大写字母
    SELECT
        exec('alter table "' || table_name || '" rename column  "' || column_name || '" to ' || lower( column_name ) || ';')
    FROM
        information_schema.COLUMNS 
    WHERE
        table_schema = 'public' 
        AND column_name <> lower(column_name)
        AND table_name = 'qrtz_triggers';


    修改表名为小写

    -- 查询大写的table_name
    SELECT * FROM information_schema.TABLES WHERE   table_schema = 'public' AND table_catalog = 'Guns' AND table_name <> lower( table_name );
    
    -- 修改表名中的大写为小写
    SELECT
        exec ( 'alter table "' || table_name || '" rename to ' || lower( table_name ) || ';' ) 
    FROM
        information_schema.tables 
    WHERE
        table_schema='public' 
        and table_catalog = 'Guns' 
        and table_name <> lower(table_name);
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
  • 原文地址:https://www.cnblogs.com/haolb123/p/15150977.html
Copyright © 2011-2022 走看看