Vik*_*iks 32 sql sql-server postgresql
我已经从MSSql server 2008通过工具导入了Postgres中的100个表,该工具创建了所有表以及大写字母的列.现在,如果我想从表中创建数据视图,例如 - STD_TYPE_CODES as-
select * from STD_TYPE_CODES
Run Code Online (Sandbox Code Playgroud)
我得到以下错误 -
ERROR: relation "std_type_codes" does not exist
LINE 1: select * from STD_TYPE_CODES
^
********** Error **********
ERROR: relation "std_type_codes" does not exist
SQL state: 42P01
Character: 15
Run Code Online (Sandbox Code Playgroud)
我知道我可以在表名周围加上引号 -
select * from "STD_TYPE_CODES"
Run Code Online (Sandbox Code Playgroud)
但是,由于我使用过MSSql Server,因此没有这样的问题.有没有办法摆脱这个?请帮忙.
Sas*_*sha 57
a_horse_with_no_name是对的.
在PostgreSQL中,不带引号的名称不区分大小写.因此SELECT * FROM hello
而且SELECT * FROM HELLO
是等价的.
但是,引用的名称区分大小写.SELECT * FROM "hello"
是不是等同于SELECT * FROM "HELLO"
.
为了使报价名称和不带引号的名称之间的"桥梁",不带引号的名称隐含小写,因此hello
,HELLO
并HeLLo
相当于"hello"
,而不是"HELLO"
或"HeLLo"
(OOPS!).
因此,在PostgreSQL中创建实体(表,视图,过程等)时,您应该指定它们不引用或引用但小写.
要转换现有的表/视图/等,您可以使用类似的东西ALTER TABLE "FOO" RENAME TO "foo"
.
或者,尝试从MSSQL修改dump以使其"兼容PostgreSQL"(因此它将包含foo
s或"foo"
s但不包含"FOO"
s).
sed -r 's/"[^"]+"/\L\0/g' dumpfile
- 但是请注意,此命令也可能会修改字符串文字中的文本.) 归档时间: |
|
查看次数: |
38769 次 |
最近记录: |