Si të përjashtoni një skemë nga një bazë të dhënash PostgreSQL
Ndonjëherë kur rivendosni një bazë të dhënash me shumë skema nga një skedar rezervë, mund të dëshironi të përjashtoni një ose më shumë skema, për një arsye ose tjetrën.
Për shembull, nëse po riktheni një bazë të dhënash të madhe për qëllime zhvillimi, mund të mos dëshironi të rivendosni një skemë që e dini se ka shumë të dhëna, gjë që mund të shkaktojë që procesi i restaurimit të zgjasë kaq shumë.
pg_restore mjeti i linjës së komandës lejon përjashtimin e një ose më shumë skemave kur rivendosni një bazë të dhënash nga një skedar rezervë i krijuar nga pg_dump. Mund të përdorni opsionin e tij -N
ose --exclude-schema
për të rivendosur objektet në skemën e emërtuar.
PostgreSQL mbështet kopje rezervë të ndryshme të dobishme të bazës së të dhënave dhe rikthen veçori. Në këtë udhëzues, ne do të tregojmë se si të përjashtojmë një skemë gjatë rivendosjes së një baze të dhënash me shumë skema PostgreSQL nga një skedar rezervë.
Përjashtoni një skemë gjatë rivendosjes së një baze të dhënash PostgreSQL
Përpara se të filloni procesin e restaurimit, në rast se po e kryeni atë në një server të ri, sigurohuni që pronari ose përdoruesi i bazës së të dhënave siç përcaktohet në kopje rezervë është krijuar në server:
$ pg_restore -d myappdb -N schema_name myappdb.dump
OR
$ pg_restore -d myappdb --exclude-schema=schema_name myappdb.dump
Në komandën e mësipërme, flamuri:
-d
– përdoret për të specifikuar emrin e bazës së të dhënave të synuar.-N
– specifikon emrin e skemës që do të përjashtohet gjatë procesit të restaurimit.myappdb.dump
– është emri i skedarit rezervë të bazës së të dhënave. Ki parasysh se skedari duhet të jetë në një nga formatet jo-tekst të thjeshtë siç është krijuar nga pg_dump.
Për të përjashtuar skema të shumta, përdorni disa flamuj -N
siç tregohet.
$ pg_restore -d myappdb -N schema_name1 -N schema_name2 -N schema_name3 myappdb.dump
OR
$ pg_restore -d myappdb --exclude-schema=schema_name1 --exclude-schema=schema_name2 --exclude-schema=schema_name3 myappdb.dump
Mund t'i thuash pg_restore të krijojë bazën e të dhënave të specifikuar nga opsioni -d
nëse nuk ekziston, duke përdorur -C
ose --krijo çelësin
si më poshtë:
$ pg_restore -d myappdb -C -N schema_name myappdb.dump
OR
$ pg_restore -d myappdb --create -N schema_name myappdb.dump
Duhet të keni parasysh se në rast se përdoret çelësi -C
, si në komandën e mëparshme, emri i bazës së të dhënave myappdb specifikohet duke përdorur çelësin -d
përdoret vetëm për të ekzekutuar komandat fillestare \DROP DATABASE myappdb” dhe \CREATE DATABASE myappdb”, të gjitha të dhënat rikthehen në emrin e bazës së të dhënave që ekziston në kopje rezervë dosje.
Për të hequr ose pastruar dhe rikrijuar bazën e të dhënave të synuar përpara se të lidheni me të, përdorni opsionin --clean
siç tregohet.
$ pg_restore --clean -d testdb -n schema_name myappdb.dump
Si parazgjedhje, nëse haset një gabim gjatë ekzekutimit të komandës SQL gjatë procesit të restaurimit, pg_restore do të vazhdojë me procesin dhe thjesht do të shfaqë gabimet.
Mund të lejoni që pg-restore të përfundojë kur haset një gabim duke shtuar opsionin -e
ose --exit-on-error
:
$ pg_restore -e -d testdb -n schema_name myappdb.dump
OR
$ pg_restore --exit-on-error -d testdb -n schema_name myappdb.dump
Për ta bërë procesin e restaurimit më të shpejtë, mund të përdorni -j
ose --number-of-jobs
për të ekzekutuar njëkohësisht. Ky opsion siguron që hapa të tillë si krijimi i indekseve, krijimi i kufizimeve ose ngarkimi i të dhënave do të ekzekutohen njëkohësisht duke përdorur sesione të njëkohshme deri në numrin e caktuar të punëve.
Sidoqoftë, varet shumë nga numri i konfigurimit të bërthamës së CPU dhe diskut në klient, server dhe rrjet:
$ pg_restore -j 4 --clean -d testdb -n schema_name myappdb.dump
OR
$ pg_restore --number-of-jobs=4 --clean -d testdb -n schema_name myappdb.dump
Mund të lexoni më shumë rreth pg_restore duke parë faqen e tij drejtues siç tregohet.
$ man pg_restore
Kjo është gjithçka që kishim për ju në këtë udhëzues të shkurtër. Nëse keni ndonjë koment ose pyetje, përdorni formularin e komenteve më poshtë për të na kontaktuar.