mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			243 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			243 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
==================================================================
 | 
						|
Name
 | 
						|
 | 
						|
dblink -- Returns a set from a remote database
 | 
						|
 | 
						|
Synopsis
 | 
						|
 | 
						|
dblink(text connstr, text sql [, bool fail_on_error])
 | 
						|
dblink(text connname, text sql [, bool fail_on_error])
 | 
						|
dblink(text sql [, bool fail_on_error])
 | 
						|
 | 
						|
Inputs
 | 
						|
 | 
						|
  connname
 | 
						|
  connstr
 | 
						|
    If two arguments are present, the first is first assumed to be a specific
 | 
						|
    connection name to use. If the name is not found, the argument is then
 | 
						|
    assumed to be a valid connection string, of standard libpq format,
 | 
						|
    e.g.: "hostaddr=127.0.0.1 dbname=mydb user=postgres password=mypasswd"
 | 
						|
 | 
						|
    If only one argument is used, then the unnamed connection is used.
 | 
						|
 | 
						|
  sql
 | 
						|
 | 
						|
    sql statement that you wish to execute on the remote host
 | 
						|
    e.g. "select * from pg_class"
 | 
						|
 | 
						|
  fail_on_error
 | 
						|
 | 
						|
    If true (default when not present) then an ERROR thrown on the remote side
 | 
						|
    of the connection causes an ERROR to also be thrown locally. If false, the
 | 
						|
    remote ERROR is locally treated as a NOTICE, and no rows are returned.
 | 
						|
 | 
						|
Outputs
 | 
						|
 | 
						|
  Returns setof record
 | 
						|
 | 
						|
Example usage
 | 
						|
 | 
						|
select * from dblink('dbname=postgres','select proname, prosrc from pg_proc')
 | 
						|
 as t1(proname name, prosrc text) where proname like 'bytea%';
 | 
						|
  proname   |   prosrc
 | 
						|
------------+------------
 | 
						|
 byteacat   | byteacat
 | 
						|
 byteaeq    | byteaeq
 | 
						|
 bytealt    | bytealt
 | 
						|
 byteale    | byteale
 | 
						|
 byteagt    | byteagt
 | 
						|
 byteage    | byteage
 | 
						|
 byteane    | byteane
 | 
						|
 byteacmp   | byteacmp
 | 
						|
 bytealike  | bytealike
 | 
						|
 byteanlike | byteanlike
 | 
						|
 byteain    | byteain
 | 
						|
 byteaout   | byteaout
 | 
						|
(12 rows)
 | 
						|
 | 
						|
select dblink_connect('dbname=postgres');
 | 
						|
 dblink_connect
 | 
						|
----------------
 | 
						|
 OK
 | 
						|
(1 row)
 | 
						|
 | 
						|
select * from dblink('select proname, prosrc from pg_proc')
 | 
						|
 as t1(proname name, prosrc text) where proname like 'bytea%';
 | 
						|
  proname   |   prosrc
 | 
						|
------------+------------
 | 
						|
 byteacat   | byteacat
 | 
						|
 byteaeq    | byteaeq
 | 
						|
 bytealt    | bytealt
 | 
						|
 byteale    | byteale
 | 
						|
 byteagt    | byteagt
 | 
						|
 byteage    | byteage
 | 
						|
 byteane    | byteane
 | 
						|
 byteacmp   | byteacmp
 | 
						|
 bytealike  | bytealike
 | 
						|
 byteanlike | byteanlike
 | 
						|
 byteain    | byteain
 | 
						|
 byteaout   | byteaout
 | 
						|
(12 rows)
 | 
						|
 | 
						|
select dblink_connect('myconn','dbname=regression');
 | 
						|
 dblink_connect
 | 
						|
----------------
 | 
						|
 OK
 | 
						|
(1 row)
 | 
						|
 | 
						|
select * from dblink('myconn','select proname, prosrc from pg_proc')
 | 
						|
 as t1(proname name, prosrc text) where proname like 'bytea%';
 | 
						|
  proname   |   prosrc
 | 
						|
------------+------------
 | 
						|
 bytearecv  | bytearecv
 | 
						|
 byteasend  | byteasend
 | 
						|
 byteale    | byteale
 | 
						|
 byteagt    | byteagt
 | 
						|
 byteage    | byteage
 | 
						|
 byteane    | byteane
 | 
						|
 byteacmp   | byteacmp
 | 
						|
 bytealike  | bytealike
 | 
						|
 byteanlike | byteanlike
 | 
						|
 byteacat   | byteacat
 | 
						|
 byteaeq    | byteaeq
 | 
						|
 bytealt    | bytealt
 | 
						|
 byteain    | byteain
 | 
						|
 byteaout   | byteaout
 | 
						|
(14 rows)
 | 
						|
 | 
						|
 | 
						|
==================================================================
 | 
						|
A more convenient way to use dblink may be to create a view:
 | 
						|
 | 
						|
 create view myremote_pg_proc as
 | 
						|
 select *
 | 
						|
 from dblink('dbname=postgres','select proname, prosrc from pg_proc')
 | 
						|
 as t1(proname name, prosrc text);
 | 
						|
 | 
						|
Then you can simply write:
 | 
						|
 | 
						|
   select * from myremote_pg_proc where proname like 'bytea%';
 | 
						|
 | 
						|
 | 
						|
==================================================================
 | 
						|
Name
 | 
						|
 | 
						|
dblink_send_query -- Sends an async query to a remote database
 | 
						|
 | 
						|
Synopsis
 | 
						|
 | 
						|
dblink_send_query(text connname, text sql)
 | 
						|
 | 
						|
Inputs
 | 
						|
 | 
						|
  connname
 | 
						|
    The specific connection name to use.
 | 
						|
 | 
						|
  sql
 | 
						|
 | 
						|
    sql statement that you wish to execute on the remote host
 | 
						|
    e.g. "select * from pg_class"
 | 
						|
 | 
						|
Outputs
 | 
						|
 | 
						|
  Returns int. A return value of 1 if the query was successfully dispatched,
 | 
						|
  0 otherwise. If 1, results must be fetched by dblink_get_result(connname).
 | 
						|
  A running query may be cancelled by dblink_cancel_query(connname).
 | 
						|
 | 
						|
Example usage
 | 
						|
 | 
						|
  SELECT dblink_connect('dtest1', 'dbname=contrib_regression');
 | 
						|
  SELECT * from 
 | 
						|
   dblink_send_query('dtest1', 'select * from foo where f1 < 3') as t1;
 | 
						|
 | 
						|
==================================================================
 | 
						|
Name
 | 
						|
 | 
						|
dblink_get_result -- Gets an async query result
 | 
						|
 | 
						|
Synopsis
 | 
						|
 | 
						|
dblink_get_result(text connname [, bool fail_on_error])
 | 
						|
 | 
						|
Inputs
 | 
						|
 | 
						|
  connname
 | 
						|
    The specific connection name to use. An asynchronous query must
 | 
						|
    have already been sent using dblink_send_query()
 | 
						|
 | 
						|
  fail_on_error
 | 
						|
 | 
						|
    If true (default when not present) then an ERROR thrown on the remote side
 | 
						|
    of the connection causes an ERROR to also be thrown locally. If false, the
 | 
						|
    remote ERROR is locally treated as a NOTICE, and no rows are returned.
 | 
						|
 | 
						|
Outputs
 | 
						|
 | 
						|
  Returns setof record
 | 
						|
 | 
						|
Notes
 | 
						|
  Blocks until a result gets available.
 | 
						|
 | 
						|
  This function *must* be called if dblink_send_query returned
 | 
						|
  a 1, even on cancelled queries - otherwise the connection
 | 
						|
  can't be used anymore. It must be called once for each query
 | 
						|
  sent, and one additional time to obtain an empty set result,
 | 
						|
  prior to using the connection again.
 | 
						|
 | 
						|
Example usage
 | 
						|
 | 
						|
contrib_regression=#   SELECT dblink_connect('dtest1', 'dbname=contrib_regression');
 | 
						|
 dblink_connect
 | 
						|
----------------
 | 
						|
 OK
 | 
						|
(1 row)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from
 | 
						|
contrib_regression-#    dblink_send_query('dtest1', 'select * from foo where f1 < 3') as t1;
 | 
						|
 t1
 | 
						|
----
 | 
						|
  1
 | 
						|
(1 row)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text[]);
 | 
						|
 f1 | f2 |     f3
 | 
						|
----+----+------------
 | 
						|
  0 | a  | {a0,b0,c0}
 | 
						|
  1 | b  | {a1,b1,c1}
 | 
						|
  2 | c  | {a2,b2,c2}
 | 
						|
(3 rows)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text[]);
 | 
						|
 f1 | f2 | f3
 | 
						|
----+----+----
 | 
						|
(0 rows)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from
 | 
						|
   dblink_send_query('dtest1', 'select * from foo where f1 < 3; select * from foo where f1 > 6') as t1;
 | 
						|
 t1
 | 
						|
----
 | 
						|
  1
 | 
						|
(1 row)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text[]);
 | 
						|
 f1 | f2 |     f3
 | 
						|
----+----+------------
 | 
						|
  0 | a  | {a0,b0,c0}
 | 
						|
  1 | b  | {a1,b1,c1}
 | 
						|
  2 | c  | {a2,b2,c2}
 | 
						|
(3 rows)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text[]);
 | 
						|
 f1 | f2 |      f3
 | 
						|
----+----+---------------
 | 
						|
  7 | h  | {a7,b7,c7}
 | 
						|
  8 | i  | {a8,b8,c8}
 | 
						|
  9 | j  | {a9,b9,c9}
 | 
						|
 10 | k  | {a10,b10,c10}
 | 
						|
(4 rows)
 | 
						|
 | 
						|
contrib_regression=#   SELECT * from dblink_get_result('dtest1') as t1(f1 int, f2 text, f3 text[]);
 | 
						|
 f1 | f2 | f3
 | 
						|
----+----+----
 | 
						|
(0 rows)
 |