首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用双引号的情况下,在camelcase中获得Postgres中的列别名而不是小写?

问如何在不使用双引号的情况下,在camelcase中获得Postgres中的列别名而不是小写?
EN

Stack Overflow用户
提问于 2015-02-09 06:39:44
回答 1查看 5K关注 0票数 5

我有一些现成的mysql查询,我想将其转换为Postgres。但问题是,列名Postgres以小写格式返回所有名称。我可以使用双引号,但我有很多疑问,所以它非常昂贵。是否有任何方法可以得到数据在骆驼的情况而不是小写。

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 05:23:46

就像@a_horse_with_no_name说的,为了所有的实际目的,这是不可能的。我想您可以下载源代码,按您喜欢的方式修改它,然后重新编译和测试它。但我觉得这是个非常非常糟糕的主意。

在数据库方面,您有两个明智的选择。

  • 用任何东西替换MySQL的后座。
  • 用双引号替换MySQL的背面。

假设您从MySQL开始。

代码语言:javascript
复制
create table `Test` (
  `TestId` integer primary key,
  `TestName` varchar(35) not null
);

create or replace view `TestAll` as
select `TestId`, `TestName` 
from `Test`;

用任何东西替换所有的后背。在PostgreSQL中运行这个。

代码语言:javascript
复制
create table Test (
  TestId integer primary key,
  TestName varchar(35) not null
);

create or replace view TestAll as
select TestId, TestName 
from Test;

PostgreSQL将所有标识符折叠为小写。一切都会正常的。(除非你使用的是保留词。(总是个坏主意。)

第二种选择,用双引号代替后排。

代码语言:javascript
复制
create table "Test" (
  "TestId" integer primary key,
  "TestName" varchar(35) not null
);

create or replace view "TestAll" as
select "TestId", "TestName"
from "Test";

PostgreSQL保留分隔标识符的大小写。一切都还能用。

您选择的方式可能与您的应用程序代码的编写方式有关。Web框架(如Rails、Laravel和Django )自始至终都生成分隔标识符。(我认为所有web框架都是这样的;这是生成SQL的最安全的方法。)其他程序可能使用分隔标识符,也可能不使用分隔标识符,它们可能或多或少地难以转换。

如果你有一个文本格式的MySQL转储文件,你可以用双引号替换每个回勾,使用这个sed一行。

代码语言:javascript
复制
$ sed -i -e 's/`/"/g' mysql_dump.file

用这种方法代替每一个反勾。

代码语言:javascript
复制
$ sed -i -e 's/`//g' mysql_dump.file

这样,sed就可以在不进行备份的情况下修改文件.使用man sed获取更多选项。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28404107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档