PostgreSQL中如何创建含空格的双词列名?
解决PostgreSQL创建带空格列名的表的问题
你的代码无法运行主要有三个问题:
- 带空格的列名错误使用了
"[列名]"格式,PostgreSQL只需要用双引号直接包裹带空格的标识符,不需要额外加方括号; "[Lease Start]"的列类型重复写了Date date,属于语法错误;- 从现有表创建表的语法不对,正确的复制结构/数据语法是
CREATE TABLE ... AS SELECT,不是直接在表定义后加From maintable。
下面给出两种正确的写法:
1. 创建空表(仅定义结构)
如果只是要创建带空格列名的空表,不需要导入数据,用这段代码:
CREATE TABLE Test( Partner varchar(10) NULL, "Partner Name" varchar(200) NULL, "Contract Number" varchar(15) NULL, "Customer Name" varchar(150) NULL, "Lease Start" date NULL );
2. 从maintable复制数据和对应列
如果需要从maintable中选取对应列来创建Test表并导入数据,用CREATE TABLE ... AS SELECT语法,注意原表的带空格列名也要用双引号包裹:
CREATE TABLE Test AS SELECT Partner, "Partner Name", "Contract Number", "Customer Name", "Lease Start" FROM maintable;
注意事项
使用带空格的列名后,后续对这些列进行查询、修改等操作时,必须始终用双引号包裹,否则PostgreSQL会把它们识别成多个独立的标识符,导致报错。比如查询时要写:
SELECT "Partner Name" FROM Test;
不能直接写SELECT Partner Name FROM Test。
内容的提问来源于stack exchange,提问作者Jophin Joseph
相关产品推荐
相关产品推荐

