Dzisiaj przedstawiam proste techniki importu i eksportu danych z bazy Oracle dla normalnych developerów Oracle (tj. nie geeków siedzących 25 godzin na dobę przed komputerem znających każde najdrobniejsze pojęcie związane z Oracle, wszystkie możliwe struktury i dostępne parametry dla wszystkich programów, tylko dla takich co pracują jak biali ludzie, mają trochę życia, może nawet psa..).
W Oracle mamy dwa fajne programy do tego celu.
Generalnie przy użyciu programów exp i imp możemy eksportować i importować :
-całą bazę
-wybrany schemat
-wybrane tabele
Eksport danych
Najprostszy jest eksport całej bazy, swoją drogą może się przydać gdybyśmy coś napsuli :P
Kod:
exp userid=system/assembler1 file='c:\andrzej\ei\calosc.dat' log='c:\andrzej\ei\.calosc.log' FULL=Y
To co następuje po userid to nazwa użytkownika łamana przez hasło. W tym wypadku muszę to zrobić jako system, ponieważ jako zwykły użytkownik nie mam dostępu do całej bazy (a całą chcę eksportować).
Po file podaję nazwę pliku do którego zostanie wrzucona zawartość bazy. Plik stworzy się sam, ale struktura katalogów już musi być. Po log podaję plik do którego mają być zrzucane logi. Podawanie tego nie jest obowiązkowe. Opcja Full=y nakazuje eksport całej bazy. Jeśli jej nie podasz, musisz wyeksportować schemat, albo tabelę, ale i tak musisz określić które.
Eksport całego schematu:
Kod:
exp userid=hr/hr file='c:\andrzej\ei\schemat.dat' log='c:\andrzej\ei\schemat.log' owner=hr
Parametry userid, file, log znaczą to samo co poprzednio :). Eksportuję jako user hr swój własny schemat. Oczywiście mogę eksportować również schematy innych userów, ale muszę do tego być zalogowany jako user system (albo user który jest ownerem schematu).
Poza tym zamiast "full=y" pojawiło się "owner=hr", co oznacza że wyeksportowany ma zostać cały schemat usera hr.
Na wypadek gdyby nie chciało Ci się wstać z fotela i zrobić eksport na kompie stojącym 2 metry dalej (albo serwerze pilnie strzeżonego przez 1435454 drzwi, strażników i bramek) to możesz zrobić to zdalnie, dodając w userid "@adres_ip" :
Eksport wybranych tabel
Możesz chcieć też zrobić sobie kopię zapasową tylko kilku tabel. Do tego celu w miejsce wcześniejszego full=y czy owner=hr wpisujesz np. tables=employees, departments :
Import danych
Jak już wyrzuciliśmy dane z bazy, to może zechcemy sobie je zaimportować z powrotem albo wrzucić na innych serwerze. Do takich zabaw używamy programu imp.
Import całej bazy
Kod:
imp userid=system/assember1 file='c:\andrzej\ei\calosc.dat' log='c:\andrzej\ei\iportall.log' full=y destroy=y
Parametr userid - wiadomo to samo co przy exp, wiadomo że jak całość wciągamy to logujemy się jako user system. File to plik z wcześniejszego eksportu danych, log tak jak wcześniej, full=y bo wciągamy całość, destroy=y oznacza, że jeśli istnieje już obiekt w bazie o takiej nazwie to zostanie skasowany i nadpisany. Jeśli tego nie dodamy, to w takiej sytuacji zacznie krzyczeć (chyba że dodamy ignore=y, wtedy olewa problemy).
Chciałbym już pisać dalej i robić screeny ale jeszcze mi się importuje....
Import schematu
Importować możemy zawartość schematu nie tylko z powrotem do schematu usera z którego zostały dane wyciągnięte, ale też dane możemy wstawić innemu userowi. Dlatego przy imporcie nie ma już 'owner=hr', ale za to jest 'touser=hr' określający do schematu jakiego usera mają dane zostać wrzucone, oraz 'fromuser=hr'
czyli schemat jakiego usera może być wciągnięty ( bo jeżeli importujemy jakiś schemat z eksportu całej bazy, to przecież mamy tam schematów od pytki i trzeba któryś wybrać ).
Kod:
imp userid=hr/hr file='c:\andrzej\ei\schemat.dat' fromuser=hr touser=hr destroy=y
Tutaj też mógłbym dać np. log='costamcostam' jak przy eksporcie, ale mi się nie chciało pisać (czytaj: da się).
Import poszczególnych tabel
Podobnie jak przy imporcie schematu robię fromuser i touser - w tym względzie działa to tak samo. Wybieram sobie też tabele które chcę zaimportować.
Kod:
imp userid=hr/hr file='c:\andrzej\tabele.dat' fromuser=hr touser=hr tables=employees
Uważaj tylko z tym importem, bo Oracle nadpisuje tabele importowane bez żadnej gadki.
W nagrodę że chciało Ci się tyle czytać masz zagadkę: Co to jest : "nie świeci i nie mieści się w dupie?"
..
...
....
..
..
"radziecka maszyna do świecenia w dupie".
Programy exp i imp mają jeszcze kilka mniej lub bardziej przydatnych parametrów. Wszystkie znajdziesz
tutaj :)