파일에있는 모든 create table ddls에서 세미콜론 (;) 앞에 삽입해야하는 문자열이 있습니다.perl에서 정규식 대체
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
출력은 다음과 같습니다
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
BLKSIZE 2048;
지금 파일의 테이블 ddls을 만들 다수가 있고 난 단지 문자열 것을 원하는 등 카탈로그, 스키마, 뷰를 만드는 등 다른 ddls가 삽입 될 테이블 stmt에 대해서만 삽입됩니다.
나는 다음과 같은 시도 :sub read_file {
my ($filename) = @_;
print "$filename \n";
open my $in, '<', $filename or carp "Could not open '$filename' for reading $!";
local $/ = undef;
my $all = <$in>;
close $in;
return $all;
}
sub write_file {
my ($filename, $content) = @_;
open my $out,'>', $filename or carp "Could not open '$filename' for writing $!";
print $out $content;
close $out;
return;
}
sub changeddl{
my $data = read_file($_);
print "$data \n";
if($data=~m/\s*Create\s*Table.*/im){
$data=~s/(\s*Create\s*Table).*(;$)/$1 blsize 2048 $2/gmi;
write_file(($_, $data))
}
}
그런 다음 내가 파일과 전화
changeddl
전화 (DDL이 포함되어 있지만 실 거예요 작동합니다.) PLS 도움이됩니다.
감사합니다. 효과적으로 일했습니다. 고맙습니다. – May