Copiar una tabla de una base de datos a otra en Postgres

Resuelto nix asked hace 14 años • 28 respuestas

Estoy intentando copiar una tabla completa de una base de datos a otra en Postgres. ¿Alguna sugerencia?

nix avatar Jul 07 '10 20:07 nix
Aceptado

Extraiga la tabla y canalícela directamente a la base de datos de destino:

pg_dump -t table_to_copy source_db | psql target_db

Nota: Si la otra base de datos ya tiene la tabla configurada, debe usar la -amarca para importar datos únicamente; de ​​lo contrario, puede ver errores extraños como "Sin memoria":

pg_dump -a -t table_to_copy source_db | psql target_db
thomax avatar May 23 '2013 08:05 thomax

También puede utilizar la función de copia de seguridad en pgAdmin II. Simplemente sigue estos pasos:

  • En pgAdmin, haga clic derecho en la tabla que desea mover, seleccione "Copia de seguridad"
  • Elija el directorio para el archivo de salida y establezca el formato en "normal"
  • Haga clic en la pestaña "Opciones de volcado n.° 1", marque "Solo datos" o "solo esquema" (dependiendo de lo que esté haciendo)
  • En la sección Consultas, haga clic en "Usar inserciones de columnas" y "Comandos de inserción de usuario".
  • Haga clic en el botón "Copia de seguridad". Esto genera un archivo .backup
  • Abra este nuevo archivo usando el bloc de notas. Verá los scripts de inserción necesarios para la tabla/datos. Cópielos y péguelos en la nueva página SQL de la base de datos en pgAdmin. Ejecutar como pgScript - Consulta->Ejecutar como pgScript F6

Funciona bien y puede hacer varias tablas a la vez.

a2ron44 avatar Sep 17 '2012 19:09 a2ron44

¡ Usar dblink sería más conveniente!

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);
tinychen avatar Jul 08 '2010 01:07 tinychen

Usando psql, en un host Linux que tiene conectividad con ambos servidores

( 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" )
Alexey Sviridov avatar Oct 31 '2013 01:10 Alexey Sviridov