X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=dump_oracle_table_for_pg;h=b226bc26a815caccac2c14786e5f7278970ff612;hp=f8969e9137d68139cd4d97038f6dca09b892cb45;hb=8f3eec5b9155b53c3b570fe6184ab7d82075ecfb;hpb=1480d6fc7956765eafe92cf49868f1fcf720c390 diff --git a/dump_oracle_table_for_pg b/dump_oracle_table_for_pg index f8969e9..b226bc2 100755 --- a/dump_oracle_table_for_pg +++ b/dump_oracle_table_for_pg @@ -24,6 +24,7 @@ use warnings; use Carp; use DBI; use Getopt::Long; +use Encode; my $host = 'localhost'; my $sid = $ENV{ORACLE_SID}; @@ -36,6 +37,7 @@ my $pg_table; my $base_table; my $column_prefix = ''; my $show_help; +my $src_charset; my $result = GetOptions( 'sid=s' => \$sid, @@ -48,6 +50,7 @@ my $result = GetOptions( 'pg-table=s' => \$pg_table, 'column-prefix=s' => \$column_prefix, 'inherits-from=s' => \$base_table, + 'source-charset=s' => \$src_charset, 'help' => \$show_help, ); @@ -94,7 +97,7 @@ sub export_table { my @data = map { normalize_value_for_tsv($_) } @$row; my $str = join("\t", @data); $str =~ s/\0//g; - print $fh "$str\n"; + print $fh encode('utf8', "$str\n"); } $sth->finish(); @@ -120,7 +123,11 @@ sub normalize_value_for_tsv { $val =~ s/\n/\\n/g; $val =~ s/\t/\\t/g; $val =~ s/\v/\\v/g; - return $val; + if ($src_charset) { + return decode($src_charset, $val); + } else { + return $val; + } } else { return '\N'; }