W trakcie tworzenia aplikacji internetowej początkowo projekt powinien powstawać w lokalnym środowisku programistycznym. Może to być wewnętrzny serwer firmowy, czy po prostu domowy komputer.
Dzięki temu możemy pracować na optymalnej konfiguracji serwerowej, która może nam ułatwiać niektóre czynności. Oszczędzamy także na czasie połączenia ze zdalnym serwerem bazodanowym.
Dopiero gdy aplikacja będzie miała wersję w miarę stabilna (nazwijmy ją beta czy RCx) to możemy ją przenieść na serwer docelowy i dalsze testy przeprowadzać już tam.
W trakcie przenoszenia aplikacji, będziemy musieli oprócz plików przenieść zawartość bazy danych, poniżej przedstawiam opis wszystkich dostępnych parametrów dumpowania dla bazy PostgreSQL 8.2.
Użycie: pg_dump [OPTION]... [DBNAME] Podstawowe opcje: -f, --file=FILENAME nazwa pliku, w którym zapisany będzie dump -F, --format=c|t|p format pliku (dowolny, tar, tekstowy) -i, --ignore-version wymuś działanie nawet gdy wersja psql jest inna od wersji pg_dump -v, --verbose verbose mode -Z, --compress=0-9 poziom kompresji (dla formatów skompresowanych) --help po dumpowaniu wyświetl pomoc --version po dumpowaniu wyświetl informację o wersji Opcje kontrolujące dumpowane dane: -a, --data-only dumpuj tylko dane, bez schematu bazy danych -b, --blobs dumpuj także pola tylu blobs -c, --clean w dumpie najpierw wyczyć strukture (poprzez dropy) -C, --create zamieść w dumpie komendę tworzenia bazy danych -d, --inserts dumpuj dane jako oddzielne komendy INSERT commands (domyślnie dumpowanie jest poprzez COPY) -D, --column-inserts dumpuj dane jako oddzielne komendy INSERT commands z nazwami kolumn (domyślnie dumpowanie jest poprzez COPY) -E, --encoding=ENCODING dumpuj dane używając kodowania ENCODING -n, --schema=SCHEMA dumpuj tylko schemat(y) SCHEMA -N, --exclude-schema=SCHEMA dumpuj wszystko oprócz schamat(ów) SCHEMA -o, --oids dumpuje wraz z numerami OID -O, --no-owner pomiń zapis odnośnie właściciela bazy danych -s, --schema-only dumuj tylko strukture bazy danych -S, --superuser=NAME w dumpie będzie zawarta nazwa superusera -t, --table=TABLE dumpuj jedynie tabele TABLE z bazy danych -T, --exclude-table=TABLE dumpuj wszystkie tabele oprócz TABLE -x, --no-privileges dumpuj z pominięciem praw dostępu (grant/revoke) --disable-dollar-quoting dumpuj z pominięciem 'dollar quoting', zostanie użyte standardowy ' --disable-triggers dumpuj z pominięciem procedur wyzwalanych automatycznie (triggers) Opcje potrzebne do połączenia: -h, --host=HOSTNAME serwer na którym postawiona jest baza -p, --port=PORT port serwera pod którym baza jest dostępna (domyślnie: "5432") -U, --username=NAME nazwa użytkownika bazy danych -W, --password wymuszenie podania hasła
Osobiście używam polecenia:
pg_dump -c -O -U USERNAME DBNAME -h HOSTNAME -p 5432 --disable-dollar-quoting -i > DBNAME-YYYY-MM-DD.sql
Otrzymany dump najpierw zawiera wyczyszczenie struktury bazy danych (-c) (jest to przydatne gdy nadpisujemy istniejącą już bazę danych), pomijam zapis dotyczący właściciela bazy danych (-O) (gdyż na 99% właściciel bazy danych źródłowej i docelowej będzie inny), pomijam parametry -d -D i dumpuję baze poprzez COPY (takie dumpowanie znacznie przyspiesza wczytywanie zdumpowanych danych) wczytuje użytkownika jakim się łączę (-U USERNAME), nazwę bazy danych (DBNAME), host serwera na którym jest baza danych (-h HOSTNAME), port na którym się łączę z bazą danych (-p 5432), wymuszam standardowe apostrofy (–disable-dollar-quoting) i na wszelki wypadek ignoruję różnice wersji (-i). Dane zapisuję w pliku o nazwie równoważnej z nazwą bazy danych w raz z bieżącą datą (> DBNAME-YYYY-MM-DD.sql)