poniedziałek, 2 lipca 2012

Eksport i import




Oracle mamy dwa programy do tego celu EXP – do eksportowania danych, oraz IMP – do ich importowania. Przy
ich użyciu możemy eksportować i importować :
- całą bazę
- wybrany schemat
- wybrane tabele


Eksport całej bazy danych


Kod:

EXP USERID=system/tajne_haslo FILE='c:\kopia_bazy\calosc.dat'
LOG='c:\kopia_bazy\calosc.log' FULL=Y

To, co następuje po userid to nazwa użytkownika łamana przez hasło. W tym wypadku musimy to zrobić jako system, ponieważ jako zwykły użytkownik nie mamy dostępu do całej bazy (a całą chcemy eksportować). Po file podajemy nazwę pliku do którego zostanie wrzucona zawartość bazy. Plik stworzy się sam, ale struktura katalogów musi zostać przez nas uprzednio stworzona. Po log podajemy 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 podamy, musimy wyeksportować schemat, albo tabelę, ale i tak musimy określić które.

Eksport całego schematu

Kod:

EXP USERID=hr/hr FILE='c:\kopia_bazy\schemat.dat' LOG='c:\kopia_bazy\schemat.log' OWNER=HR

Parametry userid, file, log oznaczą to samo co poprzednio. Eksportujemy jako user hr swój własny schemat. Oczywiście możemy eksportować również schematy innych userów, ale musimy 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.

Możemy zrobić również eksport schematu na innym komputerze. Dodajemy wtedy „@adres_ip” w userid:


EXP USERID@adres_ip=hr/hr FILE='c:\kopia_bazy\schemat.dat' LOG='c:\kopia_bazy\schemat.log'
OWNER=HR




Eksport wybranych tabel

Możemy chcieć też zrobić sobie kopię zapasową tylko kilku tabel. Do tego celu w miejsce wcześniejszego full=y
czy owner=hr wpisujemy np. tables=employees, departments :

EXP USERID=hr/hr FILE='c:\kopia_bazy\schemat.dat' LOG='c:\kopia_bazy\schemat.log'
TABLES=employees, departments

Import danych

Kiedy wykonamy eksport bazy mamy możliwość przywrócenia jej z powrotem, lub przeniesienia/skopiowania jej
na inny serwer. Do tego użyjemy programu IMP.

Import całej bazy

Kod:

IMP USERID=system/tajne_haslo FILE='c:\kopia_bazy\calosc.dat' LOG='c:\kopia_bazy\calosc.log' FULL=Y
DESTROY=Y

Parametr userid - oznacza to samo co w exp, kiedy importujemy całość bazy musimy być zalogowani jako user system. File to plik z wcześniejszego eksportu danych, log tak jak wcześniej. Full=y ponieważ importujemy 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 będziemy dostawali zapytanie czy chcemy wprowadzić zmiany (możemy zamiast tego dodać ignore=y, wtedy nie będzie nadpisywał i kasował zmian).

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ż możemy je 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, mamy tam
bardzo wiele schematów i musimy któryś wybrać).


IMP USERID=hr/hr FILE='c:\kopia_bazy\schemat.dat' fromuser=hr touser=hr destroy=y


Możemy tutaj też dodać LOG='c:\kopia_bazy\schemat.log' jak przy eksporcie, ale nie jest to konieczne.


Import poszczególnych tabel


Podobnie jak przy imporcie schematu wprowadzamy fromuser i touser - w tym względzie działa to tak samo.
Wybieramy też tabele które chcemy zaimportować.


Kod:


IMP USERID=hr/hr FILE='c:\kopia_bazy\tabele.dat' FROMUSER=hr TOUSER=hr TABLES=EMPLOYEES


!! Musimy uważać z importem, bo Oracle nadpisuje tabele importowane bez żadnej informacji.



1 komentarz:

  1. O ile export na oracle 10g i kliencie 10g udał się bez problemu na system full=y to import na systemie na takiej samej wersji oracle ale na innym serwerze powoduje całą masę błędów, łącznie z brakiem użytkowników. Ma ktoś jakiś pomysł?

    OdpowiedzUsuń