Verificamos de forma cada post de nuestra web con la meta de enseñarte en todo momento información más veraz y certera.
Solución:
Esta es una tarea realmente sencilla. Simplemente use dblink para este propósito:
INSERT INTO t(a, b, c)
SELECT a, b, c FROM dblink('host=xxx user=xxx password=xxx dbname=xxx', 'SELECT a, b, c FROM t') AS x(a integer, b integer, c integer)
Si necesita obtener datos de una base de datos externa de manera regular, sería conveniente definir un servidor y un mapeo de usuarios. Entonces, podría usar una declaración más corta:
dblink('yourdbname', 'your query')
También hay otra manera de hacerlo. Si la extensión dblink no está disponible, es posible copiar datos directamente en la línea de comando, usando la tubería que conecta la entrada y salida estándar:
psql source_database -c 'COPY table TO stdout' | psql target_database -c 'COPY table FROM stdin'
Pero esto solo funcionará en Postgres 9.4 o superior.
Si está en postgresql 9.0 o posterior (y probablemente 8.0 o posterior) en una sesión de psql, también puede usar:
CREATE DATABASE new_database TEMPLATE original_database;
La base_de_datos_nueva será un clon de la base_de_datos_original, incluidas las tablas, el esquema de tabla, las codificaciones y los datos.
De los documentos:
La limitación principal es que no se pueden conectar otras sesiones a la base de datos de origen mientras se copia.
Recomendaría que verifique que el clon sea correcto con selecciones juiciosas de las tablas db nuevas y antiguas. Los documentos también dicen:
Es importante entender, sin embargo, que esto no está (todavía) pensado como una función de “COPIA DE BASE DE DATOS” de propósito general.
Te mostramos comentarios y valoraciones
Te invitamos a añadir valor a nuestro contenido informacional añadiendo tu veteranía en las notas.