From 97fd2eb8186fcb706440f5ca1423d86947eb8426 Mon Sep 17 00:00:00 2001 From: Javier Callico Date: Mon, 11 Jul 2016 15:44:03 -0400 Subject: [PATCH 1/2] Added special handling for columns of type [date] when generating kettle scripts. --- sqlserver2pgsql.pl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sqlserver2pgsql.pl b/sqlserver2pgsql.pl index 672aecf..126504b 100755 --- a/sqlserver2pgsql.pl +++ b/sqlserver2pgsql.pl @@ -140,7 +140,7 @@ sub convert_numeric_to_int } # This is a list of the types that require a cast to be imported in kettle -my %types_to_cast = ('uuid' => '1',); +my %types_to_cast = ('uuid' => '1','date' => '1'); # This sub adds a cast (if not defined already) if # - we generate for kettle @@ -150,7 +150,7 @@ sub add_cast my ($type)=@_; if (defined $types_to_cast{$type}) { - $objects->{CASTS}->{uuid}=1; + $objects->{CASTS}->{$type}=1; } } @@ -327,11 +327,15 @@ sub convert_type sub sql_convert_column { my ($colname,$coltype)=@_; - my %functions = ( 'uuid' => 'lower'); + my %functions = ( 'uuid' => 'lower' ); if (defined ($functions{$coltype})) { return $functions{$coltype} . '([' . $colname . '])'; } + elsif ($coltype eq 'date') + { + return 'convert(varchar, [' . $colname . '], 120)'; + } else { return "[$colname]"; From ba979a425a020d1e3bf0532f3fa297745542af7a Mon Sep 17 00:00:00 2001 From: Javier Callico Date: Mon, 11 Jul 2016 16:03:44 -0400 Subject: [PATCH 2/2] Making sql_convert_column function a little more generic. --- sqlserver2pgsql.pl | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/sqlserver2pgsql.pl b/sqlserver2pgsql.pl index 126504b..82ea4a0 100755 --- a/sqlserver2pgsql.pl +++ b/sqlserver2pgsql.pl @@ -327,14 +327,10 @@ sub convert_type sub sql_convert_column { my ($colname,$coltype)=@_; - my %functions = ( 'uuid' => 'lower' ); + my %functions = ( 'uuid' => 'lower({colname})', 'date' => 'convert(varchar, {colname}, 120)' ); if (defined ($functions{$coltype})) { - return $functions{$coltype} . '([' . $colname . '])'; - } - elsif ($coltype eq 'date') - { - return 'convert(varchar, [' . $colname . '], 120)'; + return $functions{$coltype} =~ s/\{colname\}/[$colname]/r; } else {