Mamy relatywnie dużą bazę danych opartą na postgresie: ~ 20 GB. Baza danych PostgreSQL jest hostowana na heroku.
Chciałbym skopiować mały podzbiór danych tabeli do mojej lokalnej bazy danych, aby móc na nich przeprowadzać niektóre testy bez konieczności pracy nad produkcją.
Nie chcę sam generować przykładowych danych, ale raczej korzystam z danych, które już istnieją w środowisku produkcyjnym.
Wystarczy około 100 wierszy z każdej tabeli w bazie danych. Czy istnieje prosty sposób na osiągnięcie tego?
postgresql
heroku
jottr
źródło
źródło
Odpowiedzi:
Nie korzystałem z tego narzędzia, ale Jailer obiecuje to zrobić
http://sourceforge.net/projects/jailer/
źródło
Jailer może w tej sytuacji pomóc. Pracuję nad tym samym, co twój (próbuję uzyskać ~ 100 rekordów z każdej tabeli), a oto kroki, które zrobiłem: - Znajdź element główny (ten, który jest powiązany z prawie tabelami) i uzyskaj podzbiór rekordów wiersz główny (np. root to ludzie, wtedy sprawdzę wszystkie powiązane rekordy dla people.id = 1 ...) - Po zakończeniu kroku 1 zacznij od innej tabeli (tej, w której chciałbyś mieć 100 rekordów ) i pobierz jego podzbiór z powyższego wyniku.
źródło
Inną opcją jest coś, co ja właśnie niedawno natknąć (przyznane, jestem jeszcze go używać, ale plan wkrótce)
rdbms-subsetter
.Jest trochę prostszy i lżejszy niż Jailer, z kilkoma fajnymi funkcjami / dodatkami:
Warto wspomnieć o innej opcji dla baz danych Heroku, z której często korzystałem (ponieważ tam pracowałem).
Heroku jest naprawdę dość szybki w tworzeniu nowej migawkowej bazy danych, ponieważ najpierw przygotowuje dzienniki z wyprzedzeniem zapisu, a następnie łączy się z podstawową bazą danych, aby nadrobić zaległości, a następnie przestaje ją śledzić. Możesz tworzyć te „widelce” w różnych aplikacjach, aby uniknąć nadmiernego wpływu na produkcję:
Następnie możesz uruchomić aplikację lokalnie wskazaną na tej migawce. Używam tego często do suchego uruchamiania migracji danych lub schematów lub debugowania problemów klientów.
W powyższym poleceniu, jeśli masz dostęp do DB z
DATABASE_URL
włączonymyour-production-app
, skończysz z DB dostępnym zPRODUCTION_SNAPSHOT_URL
(jeśli określono--as
) w innej aplikacji o nazwiesome-other-app-to-own-forked-database
.źródło
Aby uzyskać losowy zestaw wierszy, możesz użyć LIMIT w następujący sposób:
Jest to najłatwiejsze i po prostu wybierze 100 pierwszych wierszy, na które natknął się PostreSQL. Może to być 100 ostatnio wstawionych lub być może 100 pierwszych. Jeśli potrzebujesz czegoś naprawdę losowego, spójrz na tę odpowiedź Stackoverflow .
źródło
LIMIT
nie poradzi sobie z referencjami FK. Na przykład: 100 wierszy z tabeli zamówień może zawierać klientów, którzy nie są obecni podczas eksportowania 100 wierszy z tabeli klientów.