Solución:
Cree una tabla con el conjunto que desea exportar y luego use la utilidad de línea de comando pg_dump para exportar a un archivo:
create table export_table as
select id, name, city
from nyummy.cimory
where city = 'tokyo'
$ pg_dump --table=export_table --data-only --column-inserts my_database > data.sql
--column-inserts
se volcará como comandos de inserción con nombres de columna.
--data-only
no vuelque el esquema.
Como se comenta a continuación, la creación de una vista en lugar de una tabla obviará la creación de la tabla siempre que sea necesaria una nueva exportación.
Para exportación de solo datos usar COPY
.
Obtiene un archivo con una fila de tabla por línea como texto sin formato (no INSERT
comandos), es más pequeño y más rápido:
COPY (SELECT * FROM nyummy.cimory WHERE city = 'tokio') TO '/path/to/file.csv';
Importar lo mismo a otra tabla de la misma estructura en cualquier lugar con:
COPY other_tbl FROM '/path/to/file.csv';
COPY
escribe y lee archivos local al servidor, a diferencia de los programas cliente como pg_dump
o psql
que leen y escriben archivos local para el cliente. Si ambos se ejecutan en la misma máquina, no importa mucho, pero sí para las conexiones remotas.
También está el copy
comando de psql que:
Realiza una copia de frontend (cliente). Esta es una operación que ejecuta un SQL
COPY
comando, pero en lugar de que el servidor lea o escriba el archivo especificado, psql lee o escribe el archivo y enruta los datos entre el servidor y el sistema de archivos local. Esto significa que la accesibilidad y los privilegios del archivo son los del usuario local, no del servidor, y no se requieren privilegios de superusuario de SQL.
Esto es un facil y rapido manera de exportar una tabla a un script con pgAdmin a mano sin instalaciones adicionales:
- Haga clic derecho en la tabla de destino y seleccione “Copia de seguridad”.
- Seleccione una ruta de archivo para almacenar la copia de seguridad. Como formato, elija “Normal”.
- Abra la pestaña “Opciones de volcado n. ° 2” en la parte inferior y marque “Usar inserciones de columna”.
- Haga clic en el botón Copia de seguridad.
- Si abre el archivo resultante con un lector de texto (por ejemplo, notepad ++), obtiene un script para crear la tabla completa. Desde allí, simplemente puede copiar las declaraciones INSERT generadas.
Este método también funciona con la técnica de hacer una export_table como se demuestra en la respuesta de @Clodoaldo Neto.