Bonjour,

Je souhaite faire une copie de données d'une base de données Oracle vers une autre base de données Oracle.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use DBI;
use DBD::Oracle;
 
my $dbh = DBI->connect('dbi:Oracle:', "login@base2", "mdp",{ RaiseError => 1, AutoCommit => 0 });
 
my $query = "COPY FROM login/mmdp@base1 TO login/mdp@base2 INSERT MA_TABLE(id_table,nom_table) USING SELECT c.id_table,c.nom_table FROM AUTRE_TABLE";
 
my $selectTab = $dbh->prepare($query);
$selectTab->execute;
 
if ($@)
{
  $selectTab->finish;
  system("printErreur \"$erreur => ORA-".DBI::err." ...\"");
  $dbh->disconnect;    
}
else
{
  $selectTab->finish;  
  $dbh->disconnect;
}
Mais malheureusement le programme me renvoie une erreur Oracle :
DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD ERROR: OCIStmtExecute)

J'ai lancé le COPY directement via sqlplus et cela fonctionne très bien.

Il y a-t-il une commande particulière à faire en PERL ?

Merci d'avance pour vos réponses.