2012-02-09 22 views
6

Mamy pół-dużą bazę danych, której importowanie lokalnie zajmuje kilka naszych maszyn. Zastanawiałem się, czy istnieją jakieś narzędzia, które mogłyby połączyć się z bazą danych, przeprowadzić drobną analizę i pobrać próbkę bazy danych, zachowując wszystkie relacje za pomocą parametru przekazanego. Coś takiego jak pg_sample-through_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword tworzy to zrzut, który mogę zaimportować do mojej bazy danych w celu testowania i programowania. Ale nie zajmie to 45 minut.Ułożenie próbki z bazy danych - Postgresql

Dzięki

+0

To byłoby trudne zadanie przy zachowaniu integralności referencyjnej. Pomyśl o relacjach 1: n, gdzie jeden wiersz w tabeli "a" odnosi się do 5000 wierszy w tabeli "b" ... –

+0

Zgadzam się, byłby. właśnie dlatego miałem nadzieję, że zostało już napisane. ;) Jednakże, jeśli możesz również podać kilka klas bazowych na początek i wziąć wszystko w tabeli, która miała rekord mniejszy od twoich wartości rough_size. – Sector7B

+0

Chciałbym takiego narzędzia. Mogę śnić ... –

Odpowiedz

2

Proponuję zbadać pg_dump --format=custom i pg_restore -j 12. Format custom umożliwia równoległe odtworzenia (i może być zrzucony do surowego kodu SQL, jeśli jest to pożądane, więc nie tracisz tutaj żadnej funkcji). Parametr -j do pg_restore powoduje, że uruchamia on przywracanie równolegle. Zapewnia to znaczne przyspieszenie. Zwłaszcza jeśli uruchomiłeś Maintenance_work_mem up.

To nie rozwiąże problemu, o który pytałeś bezpośrednio z powodów wymienionych powyżej przez Erwina, a także dlatego, że wymaga wiedzy na temat tego, co jest ważne do reprezentowania, a co nie jest po prostu nie w schemacie . Jest to coś, co zajmuje czas programisty i powinno być generalnie wykonywane w tym samym czasie, gdy schemat jest budowany w pierwszej kolejności.

+0

thnk ciebie, zbadam i wrócę z niektórymi danymi. – Sector7B

4

napisałem takiego narzędzia: https://github.com/mla/pg_sample

Od README:

pg_sample to narzędzie do eksportu mały, przykładowy zestaw danych z bazy danych większy PostgreSQL. Opcje wyjściowe i opcje wiersza polecenia są bardzo zbliżone do narzędzia do tworzenia kopii zapasowych pg_dump (chociaż obsługiwany jest tylko format zwykłego tekstu ).

Utworzona przykładowa baza danych zawiera wszystkie tabele z oryginału, zachowuje integralność referencyjną i obsługuje zależności cykliczne.