# read an Informix dbexport and load it into a Postgresql database


if createdb $1 >/dev/null 2>&1
then
   echo "Base de Datos $1 Creada "
   cd $1.exp
   echo "SET DATESTYLE TO 'SQL,MDY';" >formato.sql
   psql -d $1 -f formato.sql
   DL=`grep delimiter $1.sql|cut -d" " -f 6`
   echo "Delimitador: $DL "
   sleep 2
   for t in `ls *.unl|cut -d. -f 1`
   do
      echo "Transformando $t.unl --> $t.loa " 
      echo "sed -e 's/$DL$//g' < $t.unl > $t.loa  " >dep.sh
      sh dep.sh
   done
   cp -f $1.sql $1.dep
   for u in `grep dba $1.sql|cut -f 2 -d\"`
   do
     echo "sed -e 's/\"$u\"\.//g' < $1.dep >$1.new" >dep.sh
     sh dep.sh
     cp -f $1.new $1.dep
   done
   echo "sed -e 's/row size =/          /g' < $1.dep >$1.new" >dep.sh
   sh dep.sh
   cp -f $1.new $1.dep
   echo "sed -e 's/number of rows/              /g' < $1.dep >$1.new" >dep.sh
   sh dep.sh
   cp -f $1.new $1.sk1
   awk -v path=$PWD -v deli=$DL '{
     swtab=substr($0,1,7)
     if (swtab=="{ TABLE")
     {
       tab=substr($0,9,15)
     }
   
     if (swtab=="{ unloa")
     {
       arc=substr($0,22,14)
     }

     swctab=substr($0,1,12)
     if (swctab=="create table")
     {
       print ""
       print "SET client_encoding = 'LATIN1';" 
       print ""
       vr=1
     }
   
     swctab=substr($0,1,12)
     if (swctab=="create uniqu")
     {
       vidx=substr($0,1,180)
       print vidx
     }
   
     swctab=substr($0,1,12)
     if (swctab=="create index")
     {
       vidx=substr($0,1,180)
       print vidx
     }
   
     swcclu=substr($0,1,14)
     if (swcclu=="create cluster")
     {
       vclu=substr($0,22,160)
       print "create index " vclu
     }

     vrow=substr($0,1,180)
     if (swctab=="revoke all o")
     {
       vr=2
     }
   
     if (vr=="1")
     {
       print  vrow
     }
  
     if (vr=="2")
     {
       print ""
       print "copy " tab " from " "X" path "/" arc "X" " using delimiters X" deli "X with null as XX;"
       print ""
       vr=0
     }
   }' $1.sk1 > $1.skl;
   
   cp -f $1.skl $1.sk1
   echo "sed -e \"s/X/\'/g\" < $1.sk1 >$1.skl" >dep.sh
   sh dep.sh
   cp -f $1.skl $1.sk1
   echo "sed -e \"s/\.unl/\.loa/g\" < $1.sk1 >$1.skl" >dep.sh
   sh dep.sh
   cp -f $1.skl $1.sk1
   echo "sed -e \"s/datetime hour to minute/char\(5\)/g\" < $1.sk1 >$1.skl" >dep.sh
   sh dep.sh
   cp -f $1.skl $1.sk1
   echo "sed -e \"s/datetime year to month/char\(7\)/g\" < $1.sk1 >$1.skl" >dep.sh
   sh dep.sh
   rm -f dep.sh $1.new $1.sk1 $i.dep
   mv $1.skl $1.imp
   psql $1 -f $1.imp
   echo "SET DATESTYLE TO 'SQL,MDY';" >sysviews.sql
   echo "create view syscolumns as " >>sysviews.sql
   echo "select attrelid as tabid," >>sysviews.sql
   echo "       attname as colname," >>sysviews.sql
   echo "       attnum as colno," >>sysviews.sql
   echo "       atttypid as coltype," >>sysviews.sql
   echo "       attlen as collength" >>sysviews.sql
   echo "from pg_attribute;" >>sysviews.sql
   
   echo "create view systables as " >>sysviews.sql
   echo "select oid as tabid," >>sysviews.sql
   echo "       0 as nrows," >>sysviews.sql
   echo "      'T'::char(1) as tabtype," >>sysviews.sql
   echo "      relnatts as ncols," >>sysviews.sql
   echo "      relname as tabname" >>sysviews.sql
   echo "from pg_class where relname !~* 'idx' ;" >>sysviews.sql
   
   echo "create view sysindexes as " >>sysviews.sql
   echo "select oid as tabid," >>sysviews.sql
   echo "       0 as nrows," >>sysviews.sql
   echo "      'I'::char(1) as idxtype," >>sysviews.sql
   echo "      relnatts as ncols," >>sysviews.sql
   echo "      relname as idxname" >>sysviews.sql
   echo "from pg_class where relname ~* 'idx';" >>sysviews.sql
   
   echo "create view sysusers as" >>sysviews.sql
   echo "select usename as username," >>sysviews.sql
   echo "       'D'::char(1) as usertype," >>sysviews.sql
   echo "       9::smallint as priority," >>sysviews.sql
   echo "       passwd as password" >>sysviews.sql
   echo "from pg_user;" >>sysviews.sql
   psql $1 -f sysviews.sql
else
   echo "Ya Existe Base de Datos $1 "
fi
