具体需求是这样的,我们需要将生产库上的数据和测试库上的数据做对比,因为SCHEMA名字相同,无法直接导入到测试库。我们可以通过一样的方法实现这个目标
step1. 从生产导出数据,生产数据库为 benchmarkdb,schema为 sqluser
gs_dump -p 30100 -h 10.201.65.204 -U sqluser -W 'testpass' -n sqluser -f /home/omm/sqluser_backup.dump -F c benchmarkdb
step2.在测试环境创建一个新库 gausstest,并完成相应的授权
CREATE DATABASE gausstest ;
GRANT CREATE ON DATABASE gausstest to sqluser ;
GRANT DROP ON DATABASE gausstest to sqluser ;
create user ... (如果测试环境没有这个用户)
step3. 将生产数据库的数据导入新库 gausstest
gs_restore -p 30100 -h 10.201.65.204 -U sqluser -W 'testpass' -n sqluser -d gausstest -c /home/omm/sqluser_backup.dump
step4. 将 新库的schema 从新命名
alter schema sqluser rename to sqluser_prod;
step5. 从新库gausstest导出schema sqluser_prod
gs_dump -p 30100 -h 10.201.65.204 -U sqluser -W 'testpass' -n sqluser_prod -f /home/omm/sqluser_backup_prod.dump -F c gausstest
step6 将 sqluser_prod schema 导入到测试环境的benchmarkdb
gs_restore -p 30100 -h 10.201.65.204 -U sqluser -W 'testpass' -n sqluser_prod -d benchmarkdb -c /home/omm/sqluser_backup_prod.dump
step7 查看测试环境新导入的 schema sqluser_prod
set current_schema=sqluser_prod;
\d