

I don't like that nested dblink, but AFAIK I can't reference to tblB in dblink_exec body. If my understanding is correct (postgres has tbla and dbtest has tblb and you want remote insert with local select, not remote select with local insert as above): psql dbtest I just saw your revised question (closed as duplicate, or just very similar to this). You can make it as prepared statement if you want and it works as well: PREPARE migrate_data (integer) AS PostgreSQL has record pseudo-type (only for function's argument or result type), which allows you query data from another (unknown) table. INSERT INTO tblB (time) VALUES (5000), (2000) ĬREATE TABLE tblA (id serial, time integer) įROM dblink('dbname=dbtest', 'SELECT id, time FROM tblB') For example: psql dbtestĬREATE TABLE tblB (id serial, time integer)

Write * to return all columns of the inserted row(s).As Henrik wrote you can use dblink to connect remote database and fetch result. The expression can use any column names of the table named by table_name. output_expressionĪn expression to be computed and returned by the INSERT command after each row is inserted. Refer to the SELECT statement for a description of the syntax. queryĪ query ( SELECT statement) that supplies the rows to be inserted. The corresponding column will be filled with its default value. expressionĪn expression or value to assign to the corresponding column. (Inserting into only some fields of a composite column leaves the other fields null.) DEFAULT VALUESĪll columns will be filled with their default values. The column name can be qualified with a subfield name or array subscript, if needed. The name of a column in the table named by table_name. The name (optionally schema-qualified) of an existing table. In such a case both sets of with_query can be referenced within the query, but the second one takes precedence since it is more closely nested. It is possible for the query ( SELECT statement) to also contain a WITH clause. The WITH clause allows you to specify one or more subqueries that can be referenced by name in the INSERT query. If you use the query clause to insert rows from a query, you of course need to have SELECT privilege on any table or column used in the query. Use of the RETURNING clause requires SELECT privilege on all columns mentioned in RETURNING. If a column list is specified, you only need INSERT privilege on the listed columns. You must have INSERT privilege on a table in order to insert into it. The syntax of the RETURNING list is identical to that of the output list of SELECT.
Postgresql insert into from select how to#
However, any expression using the table's columns is allowed. How to insert values into a table from a select query in PostgreSQL INSERT INTO itemsver at or near select LINE INSERT INTO itemsver is.
Postgresql insert into from select serial#
This is primarily useful for obtaining values that were supplied by defaults, such as a serial sequence number. Note: The existing records in the target table are unaffected. The optional RETURNING clause causes INSERT to compute and return value(s) based on each row actually inserted. The INSERT INTO SELECT statement requires that the data types in source and target tables match. If the expression for any column is not of the correct data type, automatic type conversion will be attempted. The values supplied by the VALUES clause or query are associated with the explicit or implicit column list left-to-right.Įach column not present in the explicit or implicit column list will be filled with a default value, either its declared default value or null if there is none. If no list of column names is given at all, the default is all the columns of the table in their declared order or the first N column names, if there are only N columns supplied by the VALUES clause or query. The target column names can be listed in any order. INTO TEMPORARY TEMP UNLOGGED TABLE newtable FROM fromitem. One can insert one or more rows specified by value expressions, or zero or more rows resulting from a query. SELECT INTO define a new table from the results of a query Synopsis WITH RECURSIVE withquery.
