用的时候把$dir1改成存放原始文件的目录,$dir2改成经过更改过的文件的存放目录,$diff_dir改成存放备份文件和patch的目录就可
以了,
这个脚本我一般放在邮箱里,随身携带 :)
begin script ==>
#!/usr/bin/perl -W
use strict;
use warnings;
use File::Compare;
my $dir1 = "dir1";
my $dir2 = "dir2";
my $diff_dir = "diff_dir";
my @files = get_file_list($dir1);
foreach my $file (@files) {
if (-f "$dir1/$file") {
my $ret = compare("$dir1/$file", "$dir2/$file");
if ($ret != 0) {
my $file_directory = get_file_directory($file);
my $file_name = get_file_name($file);
if ((-e "$dir2/$file") && (-f "$dir2/$file")) {
if ($ret > 0) {
print "DIFF : $file_directory/$file_name\n";
`mkdir -p $diff_dir/$file_directory`;
`cp $dir1/$file $diff_dir/$file_directory/`;
`diff $dir1/$file $dir2/$file > $diff_dir/$file_directory/
$file_name.diff`;
}elsif ($ret < 0) {
print "ERROR : $file_directory/$file_name\n";
}
}else {
print "DELETE : $file_directory/$file_name\n";
}
}
}
}
@files = ();
@files = get_file_list($dir2);
foreach my $file (@files) {
if (-f "$dir2/$file") {
if ((!(-e "$dir1/$file")) || (-d "$dir1/$file")) {
my $file_directory = get_file_directory($file);
my $file_name = get_file_name($file);
print "ADD : $file_directory/$file_name\n";
}
}
}
sub get_file_list {
my $dir = shift;
my $command = "cd $dir; find ./";
my $command_output = `$command`;
my @files = split(/\n/, $command_output);
return @files;
}
sub get_file_name {
my $file = shift;
my $file_name = "";
if ($file =~ /^.*\/(.*?)$/) {
$file_name = $1;
}else {
$file_name = $file;
}
return $file_name;
}
sub get_file_directory {
my $file = shift;
$file =~ s/^\.\///;
my $file_directory = "";
if ($file =~ /(^.*)\/.*?$/) {
$file_directory = $1;
}else {
$file_directory = "";
}
return $file_directory;
}
end script <==
以前用这个脚本比较过一个Oracle数据库的Schema,不过当初把这个数据库里所有表和view的DDL都存成了一个独立的文件,Oracle里
用getDDL就能在线获取,但是我不知道PostgreSQL里怎么获取。
这个脚本写得太丑了,而且也不跨平台,所以暂时不想给做成模块 :)
On Mar 18, 12:57 pm, Jumping <quzhengp...@gmail.com> wrote:
> 连postgresql,做schema比较,用什么模块好呢?
>
> DBIx::Compare ?
>
> --
> Best Regards,
> Jumping Qu
> ------
> Don't tell me how many enemies we have, but where they are!
> (ADV:Perl -- It's like Java, only it lets you deliver on time and under
> budget.)
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论