我有一些现成的mysql查询,我想将其转换为Postgres。但问题是,列名Postgres以小写格式返回所有名称。我可以使用双引号,但我有很多疑问,所以它非常昂贵。是否有任何方法可以得到数据在骆驼的情况而不是小写。
发布于 2015-02-10 05:23:46
就像@a_horse_with_no_name说的,为了所有的实际目的,这是不可能的。我想您可以下载源代码,按您喜欢的方式修改它,然后重新编译和测试它。但我觉得这是个非常非常糟糕的主意。
在数据库方面,您有两个明智的选择。
假设您从MySQL开始。
create table `Test` (
`TestId` integer primary key,
`TestName` varchar(35) not null
);
create or replace view `TestAll` as
select `TestId`, `TestName`
from `Test`;用任何东西替换所有的后背。在PostgreSQL中运行这个。
create table Test (
TestId integer primary key,
TestName varchar(35) not null
);
create or replace view TestAll as
select TestId, TestName
from Test;PostgreSQL将所有标识符折叠为小写。一切都会正常的。(除非你使用的是保留词。(总是个坏主意。)
第二种选择,用双引号代替后排。
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一行。
$ sed -i -e 's/`/"/g' mysql_dump.file用这种方法代替每一个反勾。
$ sed -i -e 's/`//g' mysql_dump.file这样,sed就可以在不进行备份的情况下修改文件.使用man sed获取更多选项。
https://stackoverflow.com/questions/28404107
复制相似问题