一键修改PGSQL表名、字段名为小写

由MySQL或者Oracle无脑迁移到PostgreSQL时候多半会踩到的坑就是pgsql对于字段名或者表名中大小写问题。因为pgsql在sql的prepare时候会将大写转为小写,所以如果你的table_name或者column_name中存在大写字母,并且你的sql中没有将其用双引号“”包裹起来的时候,就会导致查询不到或者表不存在等情况,非常令人头疼。

这里提供一个转换的sql,可以将对应的column_name或者table_name中的大写字母转为小写。虽然可以通过双引号包裹的形式解决,但是为了顺应PG的号召,同时避免在日后出现更多的麻烦,还是直接转了得了!!!

首先在PG中建立一个函数,用来执行sqlstring(pg中select 'alter table ...' from xxx这种形式下,只会拼接sql,不会去执行拼接好的sql,貌似mysql就会执行啊。。。)

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

CREATE OR REPLACE FUNCTION "public"."exec"("sqlstring" varchar)RETURNS "pg_catalog"."varchar" AS $BODY$declareres varchar(50);BEGINEXECUTE sqlstring;RETURN 'ok';END
$BODY$LANGUAGE plpgsql VOLATILECOST 100

通过条件拼接SQL,根据需要自行修改吧:

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

pgsql 一键修改PGSQL表名、字段名为小写相关推荐

  1. 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  2. thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

    thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...

  3. postgres 把一个表的值转成另一个表的字段名_Phoenix系列创建Phoenix映射表

    目前,在公司小部分的业务场景中有用到 Phoenix,但也仅限基于 Phoenix 的二级索引机制来进行查询上的优化.虽然使用的频次不大,但偶尔用到时,有些语句的使用方式和注意事项总记不太熟,每次都需 ...

  4. oracle中更改表名语句,转:取Oracle 表名 字段名 注释等实用语句

    1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type fromuser_ind_columns t,user_indexes i where t.inde ...

  5. 3、MySQL——SQLyog图形化客户端、表的字段名,常见数据类型的属性

    目录 一.SQLyog图形化客户端 二.创建数据表 1.语法格式: 2.表数据的设置 三.常见数据类型的属性 1.NULL和NOT NULL 2.DEFAULT--默认值 3.PRIMARY KEY- ...

  6. sql大小写敏感吗_postgresql基础:表名字段名是大小写敏感的么

    很多人知道postgresql的表名字段名是大小写不敏感的,比如这样一个sql查询 select ID,name, TYPE, score FROM pubLIC.STUdent_SCOre limi ...

  7. oracle查询表的字段类型有哪些,oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)...

    通过搜索摸索,总结了一下 oracle 中查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助: 1.查询出所有的用户表 select ...

  8. 获取sqlserver数据库中所有库、表、字段名的方法

    获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...

  9. 查询数据库里所有表名,字段名的语句

    查询数据库里所有表名,字段名的语句 SQL查看所有表名: 1.select    name    from    sysobjects    where    type='U' 2.select * ...

最新文章

  1. ASP.net session 使用总结(2)
  2. Rabbitmq后台运行命令
  3. asp.net C#生成和解析二维码代码
  4. Javascript学习资源整理
  5. python Dask库安装方法
  6. java项目(注册和登录(成功后查看商品的信息))
  7. 【Python基础】如何用Pandas处理文本数据?
  8. 深度学习2.0-35.ResNet-18实战
  9. bzoj 2962: 序列操作
  10. Java ssm框架是什么?
  11. NOI2014起床困难综合症
  12. 利用模式进行构建第九讲——树形模式
  13. 计算机的硬盘u盘属于什么,移动硬盘和机械硬盘有什么区别?
  14. 央行数字货币(数字人民币)DCEP
  15. Mac中代理配置不稳定生效
  16. 针对DDoS攻击异常流量攻击统计
  17. 一文简单了解互联网流量变现
  18. 上班族做什么副业赚钱?全面解析副业赚钱模式!
  19. 大数据的Hadoop架构有哪些优势?
  20. 手机扫描行驶证识别应用

热门文章

  1. CSP第十二次认证 行车路线 拆点
  2. 儿时经典电影回顾,你看过几部?
  3. 使用U盘重装Windows10系统详细步骤及配图【官方纯净版】
  4. CSGO 制作cfg文件及一些常用命令
  5. DNS协议分析(域名解析)
  6. 网站开启https后很慢_网站开启https后地址栏安全锁灰色或黄色叹号
  7. 连接数据库报错init datasource error, url: jdbc:mysql:/
  8. 6.4 GitHub - 管理组织
  9. P5715 【深基3.例8】三位数排序
  10. HDLBits 系列(8)——Sequential Logic(Finite State Machines(一))