我经常在本地 Docker 上重新创建各种客户数据库,以在开发环境中测试新的 ERP 功能,因此,PostgreSQL 转储文件通常以以下内容开头:
--
-- PostgreSQL database dump
--
-- Dumped from database version 13.3 (Ubuntu 13.3-1.pgdg20.04+1)
-- Dumped by pg_dump version 13.3 (Debian 13.3-1.pgdg100+1)
...
这就是为什么我的 bash 脚本“restorefromdump.sh”(构建适当版本的 postgresql 服务器临时 docker 用于转储文件处理)以以下内容开头:
#!/bin/bash
DBDUMP=$1
DUMPFROM=$(grep "^-- Dumped.*from " "$DBDUMP")
DUMPVERSION_inclSpaces=$(grep -o '^-- Dumped from.*(' "$DBDUMP" | grep -o -E '[0-9*.]+[^version]')
DUMPVERSION="$(echo -e "${DUMPVERSION_inclSpaces}" | tr -d '[:space:]')"
REMOTEPGVER=postgres:$DUMPVERSION
# calls 'buildtmpdocker' function to build temporary postgres docker
buildtmpdocker $REMOTEPGVER
...
直接命令 './restorefromdump.sh *.dmp' 似乎有效 - 它正确识别转储版本,但也许有更好的方法?您是否习惯使用 Bash 脚本识别转储文件中的版本?