我在数据库上创建了两个表,我需要将它们复制到另一个数据库,但是在同一台机器上。我怎么能这样做?
观测值:
CREATE TABLE cities1 ( city varchar(80) primary key, location point );
CREATE TABLE weather10 ( city varchar(80) references cities1(city), temp_lo int, temp_hi int, prcp real, date date )
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');//insere uma linha na tabela com os dados
INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');
答案 0 :(得分:0)
如果表已存在于database1和database2中:
在数据库1上:
psql database1
copy cities1 to '/tmp/cities1.copy';
copy weather10 to '/tmp/weather10.copy';
在数据库2上:
psql database2
truncate cities1, weather10;
copy cities from '/tmp/cities1.copy';
copy weather10 from '/tmp/weather10.copy';
或者,从命令行开始,假设database2存在,但这些表不存在于database2中:
pg_dump database1 -tcities1 -tweather10 | psql database2
如果这些表已存在于database2中,但未填充它们:
pg_dump -a database1 -tcities1 -tweather10 | psql database2
如果表已经存在并且数据库2中包含数据:
echo 'truncate cities, weather10;' > /tmp/tfile
pg_dump -a database1 -tcities1 -tweather10 >> /tmp/tfile
psql database2 -f /tmp/tfile
rm /tmp/tfile
您甚至可以使用外包装或dblink完全在database1中进行复制操作。
我想到的另一件事是,您可以创建两个数据库并将其复制到另一个数据库,这将完成整个数据库,而不仅仅是两个表。
如果您只需要在第二个数据库中使用相同的数据,则可以在第二个数据库中创建一个外部包装器,它只引用第一个数据库中的数据(不复制它)。
可能还有其他方法: - )
祝你好运, -g