Search code examples
postgresqlforeign-table

Postgres - CREATE FOREIGN TABLE based on other table


I'm looking way to simplify CREATE FOREIGN command, so do need to specify all columns and types.

What I'm doing now (using file_fdw server):

CREATE FOREIGN TABLE temp_table_csv 
(id integer, name text)
SERVER csv_log_server
OPTIONS ( filename 'path_to_file.csv', format 'csv');

What I would like to do:

CREATE FOREIGN TABLE temp_table_csv 
(like example_table)
SERVER csv_log_server
OPTIONS ( filename 'path_to_file.csv', format 'csv');

Using LIKE or similar command so Postgres can read structure out of there But it says "like is not supported"


Solution

  • You may use table inheritance with no extra columns to simulate it:

    CREATE FOREIGN TABLE temp_table_csv()
    INHERITS (example_table)
    SERVER csv_log_server
    OPTIONS ( filename 'path_to_file.csv', format 'csv')
    

    but this will bring all the side effects of table inheritance, such as SELECT COUNT(*) FROM example_table will now including rows from temp_table_csv, and SELECT COUNT(*) FROM ONLY example_table will not.