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

POSTGRESQL:选择特定类型的列时创建表,sql,postgresql,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 a

我有一个混合数据类型(实数、整数、字符…)的表,但我只恢复具有实数值的列

我可以构建这个:

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
)

建议?

您需要将整个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

可以使用
executesqlstmt运行结果

您需要将整个CREATETABLE语句生成为动态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

可以使用
executesqlstmt运行结果

查看pg_目录以了解此信息。运行
psql-E
,然后在其中运行
\d final_data
,您将看到需要运行的相关查询。查看pg_目录以了解此信息。运行
psql-E
,然后在其中运行
\d final_data
,您将看到需要运行的相关查询。