hoe haal ik create statements uit een exportfile

Het komt voor dat er een database overgezet moet worden van server A naar server B maar dat de database op server B er anders uitziet dan die op server A. Op die momenten is het vaalk noodzakelijk op de create statements uit een exportfile te halen.


Een werkwijze wordt hieronder beschreven:


Eerst maken we een sqlfile van de dumpfile:

imp system/geheim fromuser=USER1 touser=USER2 file=dumpfile indexfile=/tmp/workfile1.sql

Vervolgens passen we deze aan zodat alleen de tabellen aangemaakt worden:

grep "^REM" /tmp/workfile1.sql > /tmp/workfile2.sql

Of alleen de indexen:

grep -v "^REM" /tmp/workfile1.sql > /tmp/workfile2.sql

Verwijder alle regels met het woordje [rows] :

grep -v rows /tmp/workfile2 > /tmp/workfile3.sql

Met VI :
Verwijder alle ["] in /tmp/workfile3.sql :

[Esc][:]1,$s/"//g

Substituut oude tablespace name met de nieuwe in /tmp/workfile3.sql:

[Esc][:] 1,$s/TABLESPACE USERS/TABLESPACE DUMMY_DATA/g

Nu kunnen we onderstaand script draaien dat een mooi sql statement zal genereren:
 
#############################
#                           #
# Auteur : Pieter de Bruijn #
#                           #
#############################
#!/bin/ksh
toggle="N"
> /tmp/workfile4.sql
cat /tmp/workfile3.sql|while read Line
do
if [ "${toggle}" = "Y" ]
then echo ${Line} >> /tmp/workfile4.sql
echo ${Line}|grep ";" > /dev/null
if [ $? = 0 ]
then
toggle="N"
continue
else
continue
fi
else echo ${Line}|grep "CREATE TABLE" > /dev/null
if [ $? = 0 ]
then
toggle="Y"
echo "#--------------------------" >> /tmp/workfile4.sql
echo ${Line} >> /tmp/workfile4.sql
continue
else
continue
fi
fi
Done

De output zal er als volgt uit zien :


$ pg /tmp/workfile4.sql
#--------------------------
CREATE TABLE USER2.DUMMY_1 (DUMMY_ID NUMBER(5, 0) NOT NULL
ENABLE, ASSET_DUMMY_ID VARCHAR2(1) NOT NULL ENABLE, PORTF_KENMERK
VARCHAR2(25) NOT NULL ENABLE, DUMMY_BEGIN_DAT DATE NOT NULL ENABLE,
DUMMY_EIND_DAT DATE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1) TABLESPACE
DUMMY_DS LOGGING NOCOMPRESS ;
#--------------------------
CREATE TABLE USER2.DUMMY_2 (MF_VOLGNR NUMBER(4, 0)
NOT NULL ENABLE, DUMMY_ID NUMBER(5, 0) NOT NULL ENABLE, FONDS_CD
NUMBER(5, 0) NOT NULL ENABLE, OPT_PERC NUMBER(5, 2) NOT NULL
ENABLE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL
65536 FREELISTS 1 FREELIST GROUPS 1) TABLESPACE DUMMY_DS
LOGGING NOCOMPRESS ;

 

 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 74 gasten online