将此dmp导入RDS Oracle的脚本有什么问题? [英] What's wrong with this script to import dmp to RDS Oracle?
问题描述
我正在尝试将.dmp文件导入AWS中的RDS Oracle. 在干净的Windows EC2中,我可以使用SQL Developer连接到Oracle RDS.
I'm trying to import my .dmp file to RDS Oracle in AWS. In my clean Windows EC2, i can connect to Oracle RDS using SQL Developer.
# RDS instance info
my $RDS_PORT=1521;
my $RDS_HOST="testphat17.citmdnq1zckt.ap-northeast-1.rds.amazonaws.com";
my $RDS_LOGIN="testphat17/testphat17";
my $RDS_SID="ORCL";
my $dirname = ""C:\Users\Administrator\Desktop\datadump"";
my $fname = $ARGV[0];
my $data = "201712010305_CLOUDTOSAI";
my $chunk = 8192;
my $sql_open = "BEGIN perl_global.fh :=
utl_file.fopen(:dirname, :fname, 'wb', :chunk); END;";
my $sql_write = "BEGIN utl_file.put_raw(perl_global.fh,
:data, true); END;";
my $sql_close = "BEGIN utl_file.fclose(perl_global.fh);
END;";
my $sql_global = "create or replace package perl_global as
fh utl_file.file_type; end;";
my $conn =
DBI>connect('dbi:Oracle:host='.$RDS_HOST.';sid='.$RDS_SID.';po
rt='.$RDS_PORT,$RDS_LOGIN, '') || die ( $DBI::errstr .
"\n") ;
my $updated=$conn->do($sql_global);
my $stmt = $conn->prepare ($sql_open);
$stmt->bind_param_inout(":dirname", \$dirname, 12);
$stmt->bind_param_inout(":fname", \$fname, 12);
$stmt->bind_param_inout(":chunk", \$chunk, 4);
$stmt->execute() || die ( $DBI::errstr . "\n");
open (INF, $fname) || die "\nCan't open $fname for
reading: $!\n";
binmode(INF);
$stmt = $conn->prepare ($sql_write);
my %attrib = ('ora_type’,’24’);
my $val=1;
while ($val > 0) {
$val = read (INF, $data, $chunk);
$stmt->bind_param(":data", $data , \%attrib);
$stmt->execute() || die ( $DBI::errstr . "\n"); };
die "Problem copying: $!\n" if $!;
close INF || die "Can't close $fname: $!\n";
$stmt = $conn->prepare ($sql_close);
$stmt->execute() || die ( $DBI::errstr . "\n");
错误说:无法识别的字符\ x93,由<-在y $ data之后的<= =-在这里在import-oracle.pl第8行的第12列附近– –
The error said: Unrecognized character \x93, marked by <-- HERE after y $data = <-- HERE near column 12 at import-oracle.pl line 8. –
推荐答案
您的引号字符在201712010305_CLOUDTOSAI;
行中不正确,可能是单词或其他内容的错误复制/粘贴,将行更改为
Your quotes character are not correct in line "201712010305_CLOUDTOSAI";
, probably some bad copy/paste from word or something else, change the line to
my $data = "201712010305_CLOUDTOSAI";
您将解决此错误
第32行的单引号也有误('ora_type’,’24’);
您将需要更改
You also have wrong single quotes on line 32 ('ora_type’,’24’);
you will need to change with
my %attrib = ('ora_type','24');
这篇关于将此dmp导入RDS Oracle的脚本有什么问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!