Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

475
Vistas
Exporte el resultado de la consulta como archivo CSV desde el contenedor Docker PostgreSQL a la máquina local

No estoy seguro de si esto es posible o si estoy haciendo algo mal, ya que todavía soy bastante nuevo en Docker. Básicamente, quiero exportar el resultado de una consulta dentro del contenedor acoplable de PostgreSQL como un archivo csv a mi máquina local.

Aquí es donde llegué hasta ahora. En primer lugar, ejecuto mi contenedor docker de PostgreSQL con este comando:

 sudo docker run --rm --name pg-docker -e POSTGRES_PASSWORD=something -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres

Luego accedo al contenedor docker con docker exec para ejecutar el comando PostgreSQL que copiaría el resultado de la consulta en un archivo csv con una ubicación específica como esta:

 \copy (select id,value from test) to 'test_1.csv' with csv;

Pensé que debería exportar el resultado de la consulta como un archivo csv llamado test_1.csv en la máquina local, pero no pude encontrar el archivo en ninguna parte de mi máquina local, también revisé estos dos directorios: $HOME/docker/volumes/postgres ; /var/lib/postgresql/data postgres

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede exportar los datos a STDOUT y canalizar el resultado a un archivo en la máquina cliente:

 docker exec -it -u database_user_name container_name \ psql -d database_name -c "COPY (SELECT * FROM table) TO STDOUT CSV" > output.csv

-c le dice a psql que ejecute una instrucción SQL determinada cuando se establezca la conexión.

Entonces su comando debería verse así:

 docker exec -it -u postgres pgdocker \ psql -d yourdb -c "COPY (SELECT * FROM test) TO STDOUT CSV" > test_1.csv
over 4 years ago · Santiago Trujillo Denunciar

0

El directorio /var/lib/postgresql/data es donde el servidor de la base de datos almacena sus archivos de datos. No es un directorio que los usuarios necesiten manipular directamente o donde no se pueda encontrar nada interesante.

Las rutas como test_1.csv son relativas al directorio de trabajo. El directorio predeterminado cuando ingresa al contenedor de postgres con docker exec es / , por lo que es donde debe estar su archivo. También puede cambiar a otro directorio con cd antes de ejecutar psql :

 root@b9e5a0572207:/some/other/path# cd /some/other/path/ root@b9e5a0572207:/some/other/path# psql -U postgres

... o puede proporcionar una ruta absoluta:

 \copy (select id,value from test) to '/some/other/path/test_1.csv' with csv;

Puede usar docker cp para transferir un archivo desde el contenedor al host:

 docker cp pg-docker:/some/other/path/test_1.csv /tmp

... o puede crear un volumen si esto es algo que hace con frecuencia.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda