Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
![]()
9 years ago
|
#!/usr/bin/perl
|
||
|
|
||
|
# RUN AS:
|
||
|
#
|
||
|
# ORACLE_HOME=/nfs/nikam/sw/oracle-10.2/ora_home_10.2/ LC_ALL=C AESOP_PASSWD=<password-of-MAMOPER> perl oracle_dump
|
||
|
#
|
||
|
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
use utf8;
|
||
|
|
||
|
use lib '/nfs/nikam/sw/oracle-10.2/perl/lib/perl';
|
||
|
use DBI;
|
||
|
use DBD::Oracle qw(:ora_types);
|
||
|
$ENV{'NLS_LANG'}='CZECH.UTF8';
|
||
|
|
||
|
|
||
|
my $pass = $ENV{'AESOP_PASSWD'} // die "You must set AESOP_PASSWD\n";
|
||
|
my $dbh = DBI->connect('dbi:Oracle:host=mffout.karlov.mff.cuni.cz;service_name=mffout.karlov.mff.cuni.cz;port=1521',
|
||
|
'mamoper', $pass, {ora_connect_with_default_signals => [ 'INT' ], 'LongReadLen' => 1000000 }) or die;
|
||
|
|
||
|
$, = "\t";
|
||
|
$\ = "\n";
|
||
|
my $dump_directory = "oracle_dks_dump";
|
||
|
mkdir $dump_directory unless -d $dump_directory;
|
||
|
|
||
|
sub dump_table($){
|
||
|
my $name = shift;
|
||
|
print $name;
|
||
|
my $filename = $dump_directory."/".$name.".csv";
|
||
|
open(my $fh, ">:encoding(UTF-8)", $filename);
|
||
|
select $fh;
|
||
|
my $query = $dbh->prepare("SELECT * FROM $name");
|
||
|
$query->execute;
|
||
|
print @{$query->{NAME}};
|
||
|
print @{$query->{TYPE}};
|
||
|
while (my @row = $query->fetchrow_array()) {
|
||
|
$_//='' for @row;
|
||
|
s/\t/\\t/g for @row;
|
||
|
s/\n/\\n/g for @row;
|
||
|
print @row;
|
||
|
}
|
||
|
select STDOUT;
|
||
|
close $fh;
|
||
|
}
|
||
|
|
||
|
# my $query = $dbh->prepare("SELECT table_name, TABLESPACE_NAME FROM all_tables WHERE owner='MAMOPER'");
|
||
|
my $query = $dbh->prepare("SELECT table_name, owner FROM all_tables");
|
||
|
$query->execute;
|
||
|
while (my @row = $query->fetchrow_array()) {
|
||
|
if (!( $row[1] eq 'SYS')) {
|
||
|
dump_table "$row[1].$row[0]";
|
||
|
}
|
||
|
}
|