1+ #! /bin/bash
2+
3+ # Start a PostgreSQL container and mount the current directory
4+ CONTAINER_ID=$( docker run --rm -d -e POSTGRES_PASSWORD=postgres -v " $( pwd) :/data" postgres)
5+ sleep 5
6+
7+ # Set file paths within the container
8+ PG_CLASS_FILE=" /data/pg_class.csv"
9+ PG_PROC_FILE=" /data/pg_proc.csv"
10+ PG_TYPE_FILE=" /data/pg_type.csv"
11+
12+ # Define SQL queries
13+ PG_CLASS_QUERY=" SELECT oid, relname, relnamespace, reltype, reloftype, relowner, relam, relfilenode, reltablespace, relpages, reltuples, relallvisible, reltoastrelid, relhasindex, relisshared, relpersistence, relkind, relnatts, relchecks, relhasrules, relhastriggers, relhassubclass, relrowsecurity, relforcerowsecurity, relispopulated, relreplident, relispartition, relrewrite, relfrozenxid, relminmxid, relacl, reloptions, relpartbound FROM pg_class"
14+ PG_PROC_QUERY=" SELECT oid, proname, pronamespace, proowner, prolang, procost, prorows, provariadic, prosupport::regproc::oid, prokind, prosecdef, proleakproof, proisstrict, proretset, provolatile, proparallel, pronargs, pronargdefaults, prorettype, proargtypes, proallargtypes, proargmodes, proargnames, proargdefaults, protrftypes, prosrc, probin, prosqlbody, proconfig, proacl FROM pg_proc"
15+ PG_TYPE_QUERY=" SELECT oid, typname, typnamespace, typowner, typlen, typbyval, typtype, typcategory, typispreferred, typisdefined, typdelim, typrelid, typsubscript::regproc::oid, typelem, typarray, typinput::regproc::oid, typoutput::regproc::oid, typreceive::regproc::oid, typsend::regproc::oid, typmodin::regproc::oid, typmodout::regproc::oid, typanalyze::regproc::oid, typalign, typstorage, typnotnull, typbasetype, typtypmod, typndims, typcollation, typdefaultbin, typdefault, typacl FROM pg_type"
16+
17+ # Execute queries and export data to mounted files
18+ docker exec -i $CONTAINER_ID psql -U postgres -c " \COPY ($PG_CLASS_QUERY ) TO '$PG_CLASS_FILE ' WITH CSV HEADER"
19+ docker exec -i $CONTAINER_ID psql -U postgres -c " \COPY ($PG_PROC_QUERY ) TO '$PG_PROC_FILE ' WITH CSV HEADER"
20+ docker exec -i $CONTAINER_ID psql -U postgres -c " \COPY ($PG_TYPE_QUERY ) TO '$PG_TYPE_FILE ' WITH CSV HEADER"
21+
22+ # Stop the container
23+ docker kill $CONTAINER_ID
0 commit comments