Recent am întâlnit problema transferului de date în postgresql, așa cum sa dovedit, pentru a face o descărcare și apoi încărcarea datelor în PostgreSQL este oarecum mai complicată decât în MySQL. Luați în considerare cum puteți face acest lucru cu ajutorul a două comenzi - pg_dump și pg_restore.
În primul rând, vom arunca de pe server, de unde transferăm datele:
Acest lucru va crea un DBNAME plin groapa de baze de date cu BLOB'ami fără owner'a, într-un format special pentru pg_restore.
Apoi, creați o bază de date pe server, unde vom face descărcarea datelor:
Steagurile în acest caz înseamnă următoarele:
- Opriți în caz de eroare.
- Nu efectuați restaurarea drepturilor (în cazul meu, pe două servere diferite, au existat pur și simplu diferiți utilizatori ai bazei de date, ceea ce a cauzat de asemenea o eroare de import).
- Rulați totul într-o singură tranzacție (dacă există o eroare, va fi mai ușor să începeți de la zero).
Mai mult, deoarece utilizatorii de pe două servere diferite au fost diferiți și dumpul a fost restabilit fără restabilirea utilizatorului, este necesar să se pună permisiuni asupra testului utilizatorului (drepturile asupra tabelelor, secvențelor și vizualizărilor viziunilor sunt expuse). În cazul meu, comenzile au fost executate de la utilizatorul pgsql:
Nu uitați să schimbați peste tot dbname la numele de bază corespunzător și, bineînțeles, să schimbați unde este necesar numele de utilizator etc.
P.S. Poate că ultimele trei comenzi pot fi înlocuite cu mijloace interne ale PostgreSQL, dar pentru mine această opțiune este acceptabilă.
Comenzile de mai sus pentru redistribuirea drepturilor pot fi împachetate într-un script shell. De exemplu, în acest caz:
Primul parametru al scriptului este numele bazei de date, al doilea parametru este numele utilizatorului la care doriți să atribuiți drepturi.