Jump to content


Photo

Exportação De Dados Do Oracle Para Arquivos Access


  • Faça o login para participar
22 replies to this topic

#1 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 16/03/2004, 10:03

Bom dia pessoal...
Dei um tempinho de descanso para vcs, mas já estou de volta...(AE prix, vai ter que me engulir..... :D :D :D :D :D :D
É o seguinte...
No sistema que estou fazendo eu preciso exportar alguns dados do meu banco Oracle para um arquivo do Access. E preciso tb importar os dados do arquivo access para o meu banco Oracle.
Bom, alguém já fez isso alguma vez?
Isso seria posível?
Alguém teria algum tutorial ou alguma apostila para isso?
Abraços
Fredera

Edição feita por: Fredera, 16/03/2004, 10:04.

"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#2 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 16/03/2004, 19:05

depende de como vc vai exportar.

vc vai ler os dados do oracle e salvar num em access ?

ou vai simplesmente transferir a db do oracle toda para access como sera...

de mais informações

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#3 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 16/03/2004, 23:46

Achei algo pra vc
http://search.cpan.o...1/Convert2Db.pm

So que esse converte do access para o mysql, postgre, e outras.

Bom so fala outra nao vai mais afundo, mas vou ver se acho algo mais.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#4 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 17/03/2004, 00:20

Opa mais infos.

Achei um codigo so que em php, mas nada complicado para passar ou estudar para perl.

E com certeza um codigo eh melhor que um module com dependencia como a acima hehe.

Ele converte de access para mysql, sendo assim pode ser que seja mais facil transferir de mysql para oracle.

<?php
    /*
        This script was written by Jason Farrell on this 4th day of April in 2003.
        This code is solely for educational purposes and may not be redistributed
        without the consent of the author. Any uses and/or responsibilites, outside
        the permission of the author are not binding to the author in any way.
       
        Please email comments to jfarrell@stu.wccnet.edu
    */
    $odbc=odbc_connect('my_dsn','my_uname','my_pass');  //Open Connection to Datasource
   
    $mysql=mysql_connect('my_host','my_uname','my_pass'); //Open Connection to MySQL and Select DB
    mysql_select_db('my_db',$mysql);
   
    $tablelist=odbc_tables($odbc);              //This will create a result set of the available tables for the datasource
    while (odbc_fetch_into($tablelist,$r))      //This will fetch each row into a hash $r
    {
        if (strtolower($r[3])=='table')         //This is a regular table and is not tabular information
        {  
            $q="select * from {$r[2]}";
            $odbcset=odbc_exec($odbc,$q);
           
            //Begin build sql insert command
            while (odbc_fetch_into($odbcset,$row))      //Create a hash $row from the query to select all the data from the listed table
            {
                $c="insert into {$r[2]}(".odbc_field_name($odbcset,1);  //Build Intial Insert Statement for data insertion into mysql
                for ($i=2; $i<=odbc_num_fields($odbcset); $i++)         //Loop in remainder of field names
                {
                    $c .= ",".odbc_field_name($odbcset,$i);
                }
                if (is_numeric($row[0])) {      //Build Initial Value parameters values
                    $c.=") values(".$row[0];
                } else {
                    $c.=") values('".$row[0]."'";
                }
                for ($i=1; $i<count($row); $i++)        //Loop in remainder
                {
                    if (is_numeric($row[$i])) {
                        $c .= ",".$row[$i];
                    } else {
                        $c .= ",'".$row[$i]."'";
                    }
                }
                $c.=")";
                #echo $c."<br>\n";
                if (mysql_query($c,$mysql)) {   //Insert the Data into the table
                    echo "Success<br>\n";       //Echo Success if it worked
                } else {
                    die(mysql_error());         //IF it fails die
                }
            }
        }
    }
    mysql_close($mysql);        //Close all open connections
    odbc_close($odbc);
?>
</body>
</html>


Opa mais um codigo, agora de mysql para oracle.

#!/usr/bin/perl -w

use strict;
use vars qw/$DEBUG %output %types $filename $outfile $loading/;
use Getopt::Long;

$DEBUG = 0;
%output = ();
%types = ();

GetOptions('infile=s' =>\$filename,
    'outfile=s'=>\$outfile,
    'load'=>\$loading);

defined $filename or die "MySQL Ensemble table file not given...\n";
defined $outfile or $outfile = "oratable.sql";

open(SQL, "<$filename");
while (<SQL>) {
    chomp;
    /^ *\#/ and next;
    # bugger, synonym is not a valid oracle column name
    /create table/i and parseCreateTable(\*SQL ,$_);
}

buildSchema();


sub buildSchema {
    open (SCHEMA, ">$outfile");
    open (CONSTRAINTS, ">$outfile.con") if defined $loading;
   
    while (my ($table, $rh_definition) = each %output) {
print SCHEMA "\nCREATE TABLE ", $table, " (";
my $columnDefinition = " ";
foreach my $column (@{$rh_definition->{'columns'}}) {
    $columnDefinition .= "\n\t" . $column . ",";
}
# last , needs removing
$columnDefinition =~ s|,$|\n\);\n|;
print SCHEMA $columnDefinition;

#output the primary key data
defined $output{$table}->{'primarykey'} and do {
    my $out = "\nalter table " . $table . " add constraint " . $table . "_pk ".  $output{$table}->{'primarykey'} . ";\n";
    defined $loading ? print CONSTRAINTS $out : print SCHEMA $out;
};


# output the normal key data
defined $output{$table}->{'key'} and do {
    foreach my $rl_key (@{$output{$table}->{'key'}}) {
  my $out =  "\ncreate index  " . $rl_key->[0] . " on " . $table . " " . $rl_key->[1] . ";\n";
  defined $loading ? print CONSTRAINTS $out : print SCHEMA $out;
    }
};
defined $output{$table}->{'unique'} and do {
    foreach my $rl_unique (@{$output{$table}->{'unique'}}) {
  my $out =  "\ncreate unique index " . $rl_unique->[0] . " on " . $table . " " . $rl_unique->[1] . ";\n";
  defined $loading ? print CONSTRAINTS $out : print SCHEMA $out;
    }
};
    }
}
   


sub parseCreateTable {
    my ($fh, $firstLine) = @_;
    my $tableName;
   
    if ($firstLine =~ /(create table) +(\w+) *\(/i) {
$tableName = $2;
    } else {
die "Line does not match create table: $firstLine";
    }
    while (<$fh>) {
chomp;
$_ =~ s/\s+//i;
$_ =~ s/synonym/synonymname /gi;
# return if it matches close bracket
/\);/ and return;

# there is a problem with the MAX_ROWS stuff. Look at it later
/\) *MAX_ROWS.+;/ and return;
# skip empty lines
next if /^ *$/;
next if /^ *\#/;

# process table keys and constraints
/primary key/i and do {parsePrimaryKey($tableName, $_); next};
/^ *key/i and do {parseKey($tableName, $_);next};
/unique/i and do {parseUniqueConstraint($tableName, $_); next};
parseColumnDefinition($tableName, $_);

    }
}

sub parsePrimaryKey{
    my ($table, $def) = @_;
    $def =~ s/^ *//;
    $def =~ s/, *?$//;
    $DEBUG and print "\n--->DEBUG: $def\n";
    $output{$table}->{'primarykey'} = $def;
}

sub parseKey {
    my ($table, $def) = @_;
    $def =~ s/^ *//;
    $def =~ s/, *$//;
    if ($def =~ /(KEY) +(\w+) *(\(.+\))/i) {
push @{$output{$table}->{'key'}}, [$table . $2, $3];
    } elsif ($def =~ /(KEY) *(\(.+\))/i) {
my $index = 1;
$index = scalar @{$output{$table}->{'key'}} + 1 if
    defined $output{$table}->{'key'};
push @{$output{$table}->{'key'}}, [$table . "_key_" . $index, $2];
    } else {
die "Unknown key definition: ", $def;
    }
}

sub parseUniqueConstraint{
    my ($table, $def) = @_;

    $def =~ s/^ *//;
    $def =~ s/, *$//;

    my $index = 1;
    if ($def =~ /UNIQUE KEY (.*?) *(\(.+?\))/i) {
      push  @{$output{$table}->{'unique'}}, [$table.$1, $2];
    } elsif ($def =~ /UNIQUE +(.*?) *(\(.+?\))/i) {
      push @{$output{$table}->{'unique'}}, [$table.$1, $2];
    } elsif ($def =~ /UNIQUE *(\(.+?\))/i) {
      push  @{$output{$table}->{'unique'}}, [$table . "_" . $index, $1];
    } else {
      die "unique constraint doesn\'t parse: ", $def;
    }
   
  }

sub parseColumnDefinition {
    my ($table, $def) = @_;

    # throw out , if it is in there
    $def =~ s/,\s*$//;
    $def =~ s/^ +//;
   
    my $columnName = "";
    # get column name
    $def =~ /^([^ ]+)/ and $columnName = $1;

    #convert typedefinitions
    $def =~ s/mediumtext/clob/gi;
    $def =~ s/int\([0-9]*\)/number/gi;
    $def =~ s/integer\(.*\)/number/gi;
    $def =~ s/INT /number /gi;
    $def =~ s/double\(.*\)/number/gi;
    $def =~ s/tinynumber/number/gi;
    $def =~ s/bignumber/number/gi;
    $def =~ s/varchar/varchar2/gi;
    $def =~ s/datetime/date/gi;
    $def =~ s/ time /varchar2(40)/gg;
    $def =~ s/auto_increment//gi;          # this can lead to bugs
    $def =~ s/unsigned//gi;
    $def =~ s/^start /start_point /gi;
    $def =~ s/^end /end_point /gi;
    #this is an interesting one; replace enum with check (value in
    $def =~ s/enum *(\(.*\))(.*)/varchar2(20) $2 CHECK \($columnName IN $1\)/i;
    # there is a nasty problem with the time things; this is a way to solve it
    # but is probably not correct....
    $def =~ s/\'0000-00-00 00\:00\:00\'/to_date\( \'01-01-0001\', 'dd-MM-yyyy' \)/;

    $DEBUG and print "--->DEBUG: $def\n";
    push @{$output{$table}->{'columns'}}, $def;
}


print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#5 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 17/03/2004, 00:24

bom este conteudo que vc pediu eh bem complicado de achar mas achei algo.

e tendo como passar pra um da pra fazer o processo contrario para passar de volta...

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#6 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 17/03/2004, 09:50

bom este conteudo que vc pediu eh bem complicado de achar mas achei algo.

e tendo como passar pra um da pra fazer o processo contrario para passar de volta...

Valeu mesmo prix.....
Vou dar uma lida nos scripts..
E respndendo a sua pergunta, são somente alguns dados que o usuário selecionaria e passaria do Oracle para um arquivo Access.

Mas valeu memo.....
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#7 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 17/03/2004, 17:32

Sendo assim pode ser mais simples se vc ler o oracle e enviar para o access naum ?

usando a module ODBC para inserir no access e vice-versa pra mandar pro oracle.

Num seria naum ?

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#8 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 18/03/2004, 09:08

Sendo assim pode ser mais simples se vc ler o oracle e enviar para o access naum ?

usando a module ODBC para inserir no access e vice-versa pra mandar pro oracle.

Num seria naum ?

Eu andei dando uma olhada, mas ainda nao vi afundo este ODBC, mas vou dar uma olhada....
Se tiver alguma coisa pra me passar, e puder me passar agradeço..
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#9 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 18/03/2004, 10:33

http://forum.wmonlin...showtopic=61744

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#10 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 18/03/2004, 10:48

http://forum.wmonlin...showtopic=61744

Prix eu dei ula lida lá no CPAN, mas pelo que eu entendi eu tenho que definir o alias do Access em cada máquina client?
Se realmente for isso como fazer isso de uma forma automática?
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#11 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 18/03/2004, 12:10

Como seria a estrutura ?
vc pega dados de onde como eh ...

pq a module seria para onde tiver perl+seu sistema ele ler o odbc.

ai eu teria que compreender como vc tem os dbs e como vc quer pegar dados pra ver se isso basta...

as vezes so um sistema de sgbd resolve.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#12 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 18/03/2004, 13:53

Como seria a estrutura ?
vc pega dados de onde como eh ...

pq a module seria para onde tiver perl+seu sistema ele ler o odbc.

ai eu teria que compreender como vc tem os dbs e como vc quer pegar dados pra ver se isso basta...

as vezes so um sistema de sgbd resolve.

Fala Prix, o Oracle e o Perl estarão obviamente em um servidor, daí o usúario que vai estar em outra máquina (o sistema será usado na internet) escolhera as tabelas que ele quer colocar no access e manda "exportar".
Só que o arquivo access será feito na máquina local e não no servidor...

Exemplo:
Na tbuser o usuário quer exportar para access todos o usuários que nasceram em 1980, então o sistema "criaria uma table em access" e exportaria os dados escolhidos"

(Então se for feito com ODBC) eu só preciso fazer o Alias do ODBC no meu servidor no caso?

EDIT: No caso o usuário ainda não teria o banco access, sistema que iria criar...

Edição feita por: Fredera, 18/03/2004, 13:54.

"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#13 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 19/03/2004, 01:56

olha eu num sei bem nao pq tem que ver se o servidor conseguiria estabelecer uma conexao na maquina (user) para acessar o mdb.

Nunca fiz este tipo de tentativa naum, mas creio que so funcionaria se tivesse um servidor web na maquina desse user que lhe desse acesso via socket ou lwp. para vc pegar os dados.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#14 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 19/09/2017, 13:16

Propecia Cruz Verde viagra cialis Il Cialis E Mutuabile
Para Que Sirve Cialis Buy Generic Tadalis Sx Acheter Du Cialis 10 Mg
Clomid Effet Secondaire <a href=http://cialtobuy.com>viagra cialis</a> Dove Comprare Viagra Generico
Buy Prevacid Solutab Online cialis Achat Viagra En France En Vannes
Keflex And Hcpcs
Sale Fedex Provera Low Price <a href=http://cialtobuy.com>cialis</a> How To Buy Diclofenac Gel
Isotretinoin find cialis Levitra Ligne
Viagrasales Canada
Isotretinoin Cheap <a href=http://cialtobuy.com>cialis online</a> Keflex Exercises

#15 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 27/09/2017, 22:46

Proscar Ot Propecia Precios Cialis Espana Benicar cialis buy online Levitra 20 Mg Online
Zyban Without Prescription On Clearance Cialis Compresse Prezzo cialis Amoxil Forte Syrup
Cialis Generique Tadalafil 30 Pilules cheap cialis Comprar Levitra Paypal
Levitra 25 Priligy Si Funciona Tadalafil 20mg generic cialis Purchase Direct Progesterone Germany C.O.D. Pharmacy Free Shipping Erfahrungsbericht Viagra 50 Domperidone For Sale




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq