Files
AWatch-rus/grafana-1c/tools/discover_postgres_1c.sh
T

47 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
set -eu
if ! command -v psql >/dev/null 2>&1; then
echo "psql not found" >&2
exit 1
fi
if [ "${1:-}" = "" ]; then
echo "Usage: $0 \"postgres://user:pass@host:5432/db?sslmode=disable\"" >&2
exit 1
fi
DSN="$1"
OUT_DIR="${2:-/tmp/onec-schema-$(date +%Y%m%d-%H%M%S)}"
mkdir -p "$OUT_DIR"
export PGPASSWORD=""
echo "[*] Dumping schemas, tables, columns, candidate accounting objects into $OUT_DIR"
psql "$DSN" -X -v ON_ERROR_STOP=1 -c "\dn+" >"$OUT_DIR/schemas.txt"
psql "$DSN" -X -v ON_ERROR_STOP=1 -c "\dt+ *.*" >"$OUT_DIR/tables.txt"
psql "$DSN" -X -v ON_ERROR_STOP=1 -c "
SELECT table_schema, table_name, column_name, data_type
FROM information_schema.columns
ORDER BY table_schema, table_name, ordinal_position;
" >"$OUT_DIR/columns.tsv"
psql "$DSN" -X -v ON_ERROR_STOP=1 -c "
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND (
table_name ILIKE '%doc%' OR
table_name ILIKE '%sale%' OR
table_name ILIKE '%realiz%' OR
table_name ILIKE '%debt%' OR
table_name ILIKE '%debitor%' OR
table_name ILIKE '%error%' OR
table_name ILIKE '%post%'
)
ORDER BY table_schema, table_name;
" >"$OUT_DIR/candidate_tables.tsv"
echo "[+] Done: $OUT_DIR"