Postgresql 启动并恢复旧答案,但仍然相关,效果很好,只是在导出所有数据库时不要忘记设置禁用触发器这对远程数据库链接有何作用?例如,我需要从另一个地方倾倒。@curlyreggie没有尝试过这个,但我看不出它不起作用的原因。尝试向命令中添加用户和服务器细节,如sopg_

Postgresql 启动并恢复旧答案,但仍然相关,效果很好,只是在导出所有数据库时不要忘记设置禁用触发器这对远程数据库链接有何作用?例如,我需要从另一个地方倾倒。@curlyreggie没有尝试过这个,但我看不出它不起作用的原因。尝试向命令中添加用户和服务器细节,如sopg_,postgresql,copy,database-table,Postgresql,Copy,Database Table,启动并恢复旧答案,但仍然相关,效果很好,只是在导出所有数据库时不要忘记设置禁用触发器这对远程数据库链接有何作用?例如,我需要从另一个地方倾倒。@curlyreggie没有尝试过这个,但我看不出它不起作用的原因。尝试向命令中添加用户和服务器细节,如sopg_dump-U remote_user-h remote_server-t table_to_copy source_db | psql target_db您可以这样尝试:“pg_dump-U remote_user-h remote_serve



启动并恢复旧答案,但仍然相关,效果很好,只是在导出所有数据库时不要忘记设置禁用触发器这对远程数据库链接有何作用?例如,我需要从另一个地方倾倒。@curlyreggie没有尝试过这个,但我看不出它不起作用的原因。尝试向命令中添加用户和服务器细节,如so
pg_dump-U remote_user-h remote_server-t table_to_copy source_db | psql target_db
您可以这样尝试:“pg_dump-U remote_user-h remote_server-t table_to_copy source_db | psql target_-U remote_user-h remote___server”请注意,如果其他数据库已经设置了表,则应仅对数据使用
-a
标志。i、 e.
pg_dump-a-t my_table my_db | psql target_db
。在这里,如果您的数据库位于服务器上,我发现只需将数据库转储到一个文件,然后将该文件scp到数据库,然后将该文件的内容发送到psql就更容易了。e、 g.
pg_dump-a-t my_table my_db>my_file.sql
并将其放在服务器上-->
psql my_other_db
@EamonnKenny要转储区分大小写的表,请执行:
pg_dump-t'.tabletopy'.source|db | psql target_db
。请注意,表名周围有单引号和双引号。为什么两个dbname在两个时间内。。?哪一个是源和目标。?我们插入的表A是目标,dbLink中的表A是源。如果我想使用dbLink bun,我不知道源表的结构?这个答案很好,因为它允许过滤复制的行(在dbLink第二个参数中添加WHERE子句)。但是,我们需要明确列名称(Postgres 9.4),例如:
INSERT INTO l_tbl(l_col1,l_col2,l_col3)SELECT*FROM dblink('dbname=r_db hostaddr=r_ip password=r_pass user=r_usr','SELECT r_col1,r_col2,r_col3 FROM r_tbl,其中r_col1在“2015-10-29”和“2015-10-30”之间)AS t1(col1-MACADDR,col2-TIMESTAMP,col3-NUMERIC(7,1))(l表示本地,r表示远程。转义单引号。提供列类型。)我试过了。这不起作用,因为您只能给它第一个密码。@max在运行转储加载命令之前,您可以执行
export PGPASSWORD=
,还需要“-h localhost”是否有可能提及目标数据库的表名?您想谈谈它吗?它不需要导出,
PGPASSWORD=password1 psql-U…
那么您甚至不需要显式的子shell!通常,您需要先做几件事情来进行设置,因此子shell可能是必需的。此外,密码不会导出到后续进程中。谢谢@LimitedTonement实际上你是对的,导出和子shell是没有必要的。它只是更复杂脚本的一部分,即使我没有尝试使用导出和子shell,所以,我提供它只是为了诚实地提供有效的解决方案表必须存在于目标数据库中。要创建它,请尝试
pg_dump-t'--schema only
Put passwords To。请注意,DataGrip不是免费的!这个功能也是IntelliJ Ultimate(也不是免费的)的一部分,但是很多人可能已经拥有了。如果您对安装DBeaver没意见,它有一个非常简单的方法在您连接的两个数据库之间传输。只需右键单击源表并选择“导出数据”,以数据库表为目标,并将目标设置为目标数据库。
truncate table tableA;

insert into tableA
select *
from dblink('hostaddr=xxx.xxx.xxx.xxx dbname=mydb user=postgres',
            'select a,b from tableA')
       as t1(a text,b text);
pg_dump -a -t my_table my_db | psql target_db
( export PGPASSWORD=password1 
  psql -U user1 -h host1 database1 \
  -c "copy (select field1,field2 from table1) to stdout with csv" ) \
| 
( export PGPASSWORD=password2 
  psql -U user2 -h host2 database2 \ 
   -c "copy table2 (field1, field2) from stdin csv" )
INSERT INTO t2 select * from 
dblink('host=1.2.3.4
 user=*****
 password=******
 dbname=D1', 'select * t1') tt(
       id int,
  col_1 character varying,
  col_2 character varying,
  col_3 int,
  col_4 varchar 
);
create table table1 as(
 select t1.* 
 from dblink(
   'dbname=dbSource user=user1 password=passwordUser1',
   'select * from table1'  
  ) as t1(
    fieldName1 as bigserial,
    fieldName2 as text,
    fieldName3 as double precision 
  )
 )
pg_dump -U Username -h DatabaseEndPoint -a -t TableToCopy SourceDatabase | psql -h DatabaseEndPoint -p portNumber -U Username -W TargetDatabase
pg_dump -h localhost -U myuser -C -t my_table -d first_db>/tmp/table_dump
psql -U myuser -d second_db</tmp/table_dump
 # grab the list of cols straight from bash

 psql -d "$src_db" -t -c \
 "SELECT column_name 
 FROM information_schema.columns 
 WHERE 1=1 
 AND table_name='"$table_to_copy"'"
 # ^^^ filter autogenerated cols if needed     

 psql -d "$src_db" -c  \
 "copy ( SELECT col_1 , col2 FROM table_to_copy) TO STDOUT" |\
 psql -d "$tgt_db" -c "\copy table_to_copy (col_1 , col2) FROM STDIN"
pg_dump -h <host ip address> -U <host db user name> -t <host table> > <host database> | psql -h localhost -d <local database> -U <local db user>
python db_copy_table.py "host=192.168.1.1 port=5432 user=admin password=admin dbname=mydb" "host=localhost port=5432 user=admin password=admin dbname=mydb" alarmrules -w "WHERE id=19" -v
Source number of rows = 2
INSERT INTO alarmrules (id,login,notifybyemail,notifybysms) VALUES (19,'mister1',true,false);
INSERT INTO alarmrules (id,login,notifybyemail,notifybysms) VALUES (19,'mister2',true,false);
PGPASSWORD=<password> pg_dump -h <hostIpAddress> -U <hostDbUserName> -t <hostTable> > <hostDatabase> | PGPASSWORD=<pwd> psql -h <toHostIpAddress> -d <toDatabase> -U <toDbUser>
SQL Error [34000]: ERROR: portal "c_2" does not exist
    ERROR: Invalid protocol sequence 'P' while in PortalSuspended state.