Geoffrey
view release on metacpan or search on metacpan
lib/Geoffrey/Converter/SQLite.pm view on Meta::CPAN
return $params->{default};
}
sub can_create_empty_table { return 0 }
sub colums_information {
my ( $self, $ar_raw_data ) = @_;
return [] if scalar @{$ar_raw_data} == 0;
my $table_row = shift @{$ar_raw_data};
$table_row->{sql} =~ s/^.*(CREATE|create) (.*)\(/$2/g;
my $columns = [];
for ( split m/,/, $table_row->{sql} ) {
s/^TABLE\s+\S+\s+\((.*)/$1/g;
s/^\s*(.*)\s*$/$1/g;
my $rx_not_null = 'NOT NULL';
my $rx_primary_key = 'PRIMARY KEY';
my $rx_default = 'AUTOINCREMENT|DEFAULT';
my $rx_column_values = qr/($rx_not_null)*\s($rx_primary_key)*.*($rx_default \w{1,})*/;
my @column = m/^(\w+)\s([[:upper:]]+)(\(\d*\))*\s$rx_column_values$/;
next if scalar @column == 0;
$column[$I_CONST_LENGTH_VALUE] =~ s/([\(\)])//g if $column[$I_CONST_LENGTH_VALUE];
push @{$columns},
lib/Geoffrey/Converter/SQLite.pm view on Meta::CPAN
}
return $columns;
}
sub index_information {
my ( $self, $ar_raw_data ) = @_;
my @mapped = ();
for ( @{$ar_raw_data} ) {
next if !$_->{sql};
my ($s_columns) = $_->{sql} =~ m/\((.*)\)$/;
my @columns = split m/,/, $s_columns;
s/^\s+|\s+$//g for @columns;
push @mapped,
{
name => $_->{name},
table => $_->{tbl_name},
columns => \@columns
};
}
return \@mapped;
}
( run in 1.321 second using v1.01-cache-2.11-cpan-71847e10f99 )