Mam wersję deweloperską i wersję produkcyjną działającą w Django.
Niedawno zacząłem zapełniać go dużą ilością danych i stwierdziłem, że django loaddata próbuje załadować wszystko do pamięci przed dodaniem go do bazy danych i moje pliki będą na to za duże.
Jaki jest właściwy sposób na przekazanie moich danych z mojej maszyny programistycznej do mojej produkcji?
Zrobiłem...
pg_dump -U user -W db ./filename.sql
a potem na serwerze produkcyjnym zrobiłem ...
psql dbname < filename.sql
Wygląda na to, że zadziałało, wszystkie dane tam są, ale wystąpiły pewne błędy, takie jak
relation xxx already exists
constrain xxx for relation xxx already exists
i było ich całkiem sporo, ale jak powiedziałem, wszystko wydaje się tam być. Czy to właściwy sposób, aby to zrobić?
Edycja: Mam na maszynie produkcyjnej bazę danych z informacjami i nie chcę obcinać tabel przed importem.
Odpowiedzi:
1 dla odpowiedzi № 1Oto skrypt, którego używam:
pg_dump -d DATABASE_NAME -U postgres --format plain --inserts > /FILE.sql
Edytować: Jak napisano w komentarzach, że nie chcesz obcinać tabel przed importem, nie możesz wykonać tego typu importu do produkcyjnej bazy danych. Sugeruję opróżnienie produkcyjnej bazy danych przed zaimportowaniem zrzutu bazy danych deweloperów.