POSTGRESQL:将表创建为选择特定类型的列

时间:2013-11-24 18:55:01

标签: sql postgresql

我有一个包含混合类型数据(真实,整数,字符......)的表格,但我只会恢复具有实际值的列。

我可以构建这个:

SELECT 'SELECT ' || array_to_string(ARRAY(
select 'o' || '.' || c.column_name 
from information_schema.columns as c
where table_name = 'final_datas'
and c.data_type = 'real'), ',') || ' FROM final_datas as o' As sqlstmt

给出了:

"SELECT o.random,o.struct2d_pred2_num,o.pfam_num,o.transmb_num [...] FROM final_datas as o"

我想创建一个包含这些列的表。当然,这样做,不起作用:

create table table2 as (
SELECT 'SELECT ' || array_to_string(ARRAY(
select 'o' || '.' || c.column_name 
from information_schema.columns as c
where table_name = 'final_datas'
and c.data_type = 'real'), ',') || ' FROM final_datas as o' As sqlstmt
)

建议?

1 个答案:

答案 0 :(得分:1)

您需要将整个CREATE TABLE语句生成为动态SQL:

SELECT 'CREATE TABLE table2 AS SELECT ' || array_to_string(ARRAY(
select 'o' || '.' || c.column_name 
from information_schema.columns as c
where table_name = 'final_datas'
and c.data_type = 'real'), ',') || ' FROM final_datas as o' As sqlstmt

结果可以使用EXECUTE sqlstmt;

运行