Postgres在select into语句中更改或检查所有列的数据类型


INSERT INTO table_name( a, b, c, d) 
SELECT t1.a a, t1.b b, t1.c c, t1.d d 
FROM table_name t1
AS t(a bigint, b character varying, c numeric, d numeric)

但是我得到了PG::SyntaxError: ERROR: syntax error at or near "AS"请大家帮帮我。

如a_horse_with_no_name所述-强制转换选择列表表达式。作为众多alter table语句的替代方案,您可以这样做:(1)使用select查询创建具有临时名称的表,然后(2)删除原始表,最后(3)重命名具有临时名称的表。但是,您必须注意可能存在于原始表中的约束和索引。

-- 1.
create table tmp_table_name as
SELECT a::bigint as a, b::text as b, c::numeric as c, d::numeric as d
FROM table_name;
-- 2.
drop table table_name;
-- 3.
alter table tmp_table_name rename to table_name;

相关内容

最新更新