使用pg_dump从par文件导出多个模式



为了使用pg_dump导出,我知道我需要做这样的事情来导出多个模式

举例:pg_dump -n user1 -n user2 -f backup.sql

但如果我有10模式,而不是使用"-n"N次是否有更好的方法来定义模式列表,比如在文本文件中,并以某种方式在pg_dump命令行中呈现?

感谢

使用官方文档中出现的正则表达式模式

-n pattern --schema=pattern只转储匹配模式的模式;这将选择模式本身及其包含的所有对象。通过写入多个-n开关,可以选择多个模式。模式参数被解释根据psql的d命令使用的相同规则作为模式(参见下面的模式),所以多个还可以通过在模式中写入通配符来选择模式。当使用通配符时,be如果需要,请注意引用模式,以防止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 '%sn' "$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 '%sn' "$cmd" 
eval "$cmd")

相关内容

  • 没有找到相关文章

最新更新