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
,您将看到需要运行的相关查询。