¿Cómo puedo volcar todas las tablas a CSV para un esquema PostgreSQL?


10

Tengo una base de datos con muchos esquemas y quiero volcar cada uno de los contenidos de la tabla a CSV. Soy consciente del comando COPIAR, pero no estoy seguro de cómo escribir algo que lea todas las tablas en un esquema y ejecute la COPIA contra ellas.

Respuestas:


17

Aquí hay un script de shell que puede hacer lo que quieras:

SCHEMA="myschema"
DB="mydb"

psql -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" $DB |\
  while read TBL; do
    psql -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV" $DB > $TBL.csv
  done

Asegúrese de establecer las variables DB y SCHEMA en su base de datos y esquema particulares.

El comando psql de ajuste utiliza los indicadores A y t para hacer una lista de tablas de la cadena que se pasa al comando c.


3

Si necesita exportar todos los esquemas, aquí está el script

PGDATABASE="db"
PGUSER="user"

psql -Atc "select schema_name from information_schema.schemata" |\
    while read SCHEMA; do
    if [[ "$SCHEMA" != "pg_catalog" && "$SCHEMA" != "information_schema" ]]; then
        psql -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" |\
            while read TBL; do
                psql -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV DELIMITER ';' HEADER ENCODING 'UTF-8'" > $SCHEMA.$TBL.csv
            done
    fi
    done
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.