postgresql 使用pg_dump从类似于par文件的文件中导出多个模式

fhity93d  于 2023-02-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(217)

为了使用pg_dump进行导出,我意识到需要执行类似下面的操作来导出多个模式
例如:pg_dump -n user1 -n user2 -f backup.sql
但是如果我有10个模式,而不是使用"-n" n次,有没有更好的方法来定义模式列表,比如在文本文件中,然后以某种方式在pg_dump命令行中呈现?
谢谢

ulydmbyx

ulydmbyx1#

使用出现在官方文档中的正则表达式模式
-n pattern --schema=pattern仅转储与模式匹配的架构;这将选择架构本身及其包含的所有对象。通过编写多个-n开关可以选择多个架构。pattern参数根据psql的\d命令使用的相同规则解释为模式(请参阅下面的模式),因此也可以通过在模式中写入通配符来选择多个架构。使用通配符时,如果需要的话,请小心地引用该模式,以防止shell扩展通配符;参见下面的实施例。
要转储名称以east或west开头并以gsm结尾的所有方案(不包括名称中包含单词test的任何方案),请执行以下操作:

$ pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql

同样,使用正则表达式表示法合并开关:

$ pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql

或者使用shell脚本和包含模式名称的文本文件(一行一行

#!/bin/bash
cat schemas.txt | while read schema || [[ -n $schema ]];
do
  cmd="pg_dump -n '${schema}' postgres > ${schema}.sql"
  printf '%s\n' "$cmd"
  eval "$cmd"
done

其中postgres是您的数据库。另外,一个转储文件中包含所有选定模式的版本

#!/bin/bash
cat schemas.txt | (while read schema || [[ -n $schema ]];
do
 params+="-n '${schema}' "
done
cmd="pg_dump $params postgres > some_schemas.sql"
printf '%s\n' "$cmd" 
eval "$cmd")

相关问题