| Line 5... |
Line 5... |
| 5 |
sub getFieldInfo {
|
5 |
sub getFieldInfo {
|
| 6 |
my $fieldInfo = shift;
|
6 |
my $fieldInfo = shift;
|
| 7 |
my $primary_key = shift;
|
7 |
my $primary_key = shift;
|
| 8 |
my @output;
|
8 |
my @output;
|
| 9 |
|
9 |
|
| - |
|
10 |
|
| 10 |
push @output, "'keyfield' => 1" if ( $primary_key);
|
11 |
push @output, "'keyfield' => 1" if ( $primary_key);
|
| 11 |
if ($fieldInfo =~ m/not null/i ) {
|
12 |
if ($fieldInfo =~ m/not null/i ) {
|
| 12 |
push @output, "'required' => true";
|
13 |
push @output, "'required' => true";
|
| 13 |
$fieldInfo =~ s/not null//i; # remove the not null from the string
|
14 |
$fieldInfo =~ s/not null//i; # remove the not null from the string
|
| 14 |
}
|
15 |
}
|
| - |
|
16 |
|
| - |
|
17 |
if ($fieldInfo =~ m/comment *\'([^']+)\'/i ) {
|
| - |
|
18 |
$comment = $1;
|
| - |
|
19 |
$fieldInfo =~ s/comment *\'([^']+)\'//i
|
| - |
|
20 |
} else {
|
| - |
|
21 |
$comment = '';
|
| - |
|
22 |
}
|
| - |
|
23 |
|
| 15 |
$fieldInfo =~ s/default +null//i; # we just ignore default null
|
24 |
$fieldInfo =~ s/default +null//i; # we just ignore default null
|
| - |
|
25 |
if ($fieldInfo =~ m/default +(\'.*\')/i ) {
|
| - |
|
26 |
$default = $1;
|
| - |
|
27 |
$fieldInfo =~ s/default +(\'.*\')//i;
|
| - |
|
28 |
push @output, "'default' => $default";
|
| 16 |
if ($fieldInfo =~ /default +([^ ]+)/i ) {
|
29 |
} elsif ($fieldInfo =~ /default +([^ ]+)/i ) {
|
| 17 |
$default = $1;
|
30 |
$default = $1;
|
| 18 |
$fieldInfo =~ s/default +([^ ]+)//;
|
31 |
$fieldInfo =~ s/default +([^ ]+)//;
|
| 19 |
push @output, "'default' => $default";
|
32 |
push @output, "'default' => $default";
|
| 20 |
}
|
33 |
}
|
| 21 |
if ($fieldInfo =~ m/auto_increment/i ) {
|
34 |
if ($fieldInfo =~ m/auto_increment/i ) {
|
| Line 32... |
Line 45... |
| 32 |
$size =~ s/[^0-9]//gi;
|
45 |
$size =~ s/[^0-9]//gi;
|
| 33 |
push @output, "'width' => $size";
|
46 |
push @output, "'width' => $size";
|
| 34 |
} # if
|
47 |
} # if
|
| 35 |
}
|
48 |
}
|
| 36 |
#return "\n//$original\n\n" . join(" , ", @output);
|
49 |
#return "\n//$original\n\n" . join(" , ", @output);
|
| 37 |
return join(" , ", @output);
|
50 |
return ($comment, join(" , ", @output));
|
| 38 |
}
|
51 |
}
|
| 39 |
|
52 |
|
| 40 |
|
53 |
|
| 41 |
|
54 |
|
| 42 |
sub getTableDef {
|
55 |
sub getTableDef {
|
| 43 |
my $table = shift;
|
56 |
my $table = shift;
|
| 44 |
|
57 |
print "$table\n";
|
| 45 |
my $unique_key_regex = 'unique key [a-z0-9]+ \(([^)]+)\),?';
|
58 |
my $unique_key_regex = 'unique key [a-z0-9]+ \(([^)]+)\),?';
|
| 46 |
my $primary_key_regex = 'primary key \(([^)]+)\),?';
|
59 |
my $primary_key_regex = 'primary key \(([^)]+)\),?';
|
| - |
|
60 |
my $comment_regex = "comment *'([^']+)'";
|
| 47 |
my %tableInformation;
|
61 |
my %tableInformation;
|
| 48 |
$table =~ s/ +/ /gi; # remove duplicate spaces
|
62 |
$table =~ s/ +/ /gi; # remove duplicate spaces
|
| 49 |
$table =~ s/ ,/,/gi; # remove all spaces before comma's
|
63 |
$table =~ s/ ,/,/gi; # remove all spaces before comma's
|
| - |
|
64 |
print "$table\n";
|
| 50 |
$table =~ m/create table ([a-z0-9_]+) *\(([^;]+)\)/i; #
|
65 |
$table =~ m/create table ([a-z0-9_]+) *\((.+)\)([^\(\)]*)$/i; #
|
| 51 |
$tableInformation{'table name'} = $1;
|
66 |
$tableInformation{'table name'} = $1;
|
| 52 |
$table = $2;
|
67 |
$table = $2;
|
| - |
|
68 |
$tableCommentStuff = $3;
|
| - |
|
69 |
if ( $tableCommentStuff and $tableCommentStuff =~ m/comment.*\'(.*)\'/i ) {
|
| - |
|
70 |
$tableInformation{'comment'} = $1;
|
| 53 |
|
71 |
}
|
| 54 |
if ( $table =~ m/$primary_key_regex/i ) {
|
72 |
if ( $table =~ m/$primary_key_regex/i ) {
|
| 55 |
$tableInformation{'primary keys'} = $1;
|
73 |
$tableInformation{'primary keys'} = $1;
|
| 56 |
$table =~ s/$primary_key_regex//i;
|
74 |
$table =~ s/$primary_key_regex//i;
|
| 57 |
}
|
75 |
}
|
| 58 |
if ( $table =~ m/$unique_key_regex/i ) {
|
76 |
if ( $table =~ m/$unique_key_regex/i ) {
|
| Line 64... |
Line 82... |
| 64 |
for ( $i = 0; $i < @columnInformation; $i++) {
|
82 |
for ( $i = 0; $i < @columnInformation; $i++) {
|
| 65 |
$columnInformation[$i] =~ s/^ +//;
|
83 |
$columnInformation[$i] =~ s/^ +//;
|
| 66 |
if ( $columnInformation[$i] =~ m/ *([a-z0-9_]+) +(.*)/i ) {
|
84 |
if ( $columnInformation[$i] =~ m/ *([a-z0-9_]+) +(.*)/i ) {
|
| 67 |
$fieldName = $1;
|
85 |
$fieldName = $1;
|
| 68 |
$fieldDef = $2;
|
86 |
$fieldDef = $2;
|
| 69 |
$fieldInfo{$fieldName} = &getFieldInfo($fieldDef,$tableInformation{'primary keys'} =~ m/$fieldName/);
|
87 |
($fieldInfo{$fieldName}{'comment'},$fieldInfo{$fieldName}{'data'}) = &getFieldInfo($fieldDef, $tableInformation{'primary keys'} ? ($tableInformation{'primary keys'} =~ m/$fieldName/) : 0 );
|
| 70 |
}
|
88 |
}
|
| 71 |
} # for
|
89 |
} # for
|
| 72 |
#$tableInformation{'fields'} = \%fieldInfo;
|
90 |
#$tableInformation{'fields'} = \%fieldInfo;
|
| 73 |
#print Dumper(\%fieldInfo );
|
91 |
#print Dumper(\%fieldInfo );
|
| 74 |
|
- |
|
| 75 |
my $output = "'" . $tableInformation{'table name'} . "' => array( \n";
|
92 |
my $output = "'" . $tableInformation{'table name'} . "' => array( \n";
|
| - |
|
93 |
if ( $tableInformation{'comment'} ) {
|
| - |
|
94 |
$output .= "/* $tableInformation{'comment'} */\n";
|
| - |
|
95 |
}
|
| 76 |
$output .= "\t'table name' => '" . $tableInformation{'table name'} . "',\n";
|
96 |
$output .= "\t'table name' => '" . $tableInformation{'table name'} . "',\n";
|
| 77 |
if ($tableInformation{'primary keys'}) {
|
97 |
if ($tableInformation{'primary keys'}) {
|
| 78 |
if ( $tableInformation{'primary keys'} =~ m/,/ ) {
|
98 |
if ( $tableInformation{'primary keys'} =~ m/,/ ) {
|
| 79 |
#following line takes all items in a comma delimited list and quotes them
|
99 |
#following line takes all items in a comma delimited list and quotes them
|
| 80 |
$output .= "\t'key field' => array('" . join("','", split( ',',$tableInformation{'primary keys'})) . "'),\n";
|
100 |
$output .= "\t'key field' => array('" . join("','", split( ',',$tableInformation{'primary keys'})) . "'),\n";
|
| Line 87... |
Line 107... |
| 87 |
#$fieldNames = join( ',',@fields );
|
107 |
#$fieldNames = join( ',',@fields );
|
| 88 |
$output .= "\t'display columns' => array('" . join( "','",@fields ) . "'),\n";
|
108 |
$output .= "\t'display columns' => array('" . join( "','",@fields ) . "'),\n";
|
| 89 |
$output .= "\t'display query' => 'select " . join( ',',@fields ) . " from " . $tableInformation{'table name'} . "',\n";
|
109 |
$output .= "\t'display query' => 'select " . join( ',',@fields ) . " from " . $tableInformation{'table name'} . "',\n";
|
| 90 |
my @fieldInfo;
|
110 |
my @fieldInfo;
|
| 91 |
foreach $thisField (keys %fieldInfo ) {
|
111 |
foreach $thisField (keys %fieldInfo ) {
|
| - |
|
112 |
push @fieldInfo, "/* " . $fieldInfo{$thisField}{'comment'} . " */" if $fieldInfo{$thisField}{'comment'};
|
| 92 |
push @fieldInfo, "'$thisField' => array(" . $fieldInfo{$thisField} . ")";
|
113 |
push @fieldInfo, "'$thisField' => array(" . $fieldInfo{$thisField}{'data'} . ")";
|
| 93 |
}
|
114 |
}
|
| 94 |
$output .= "\t'field info' => array(\n\t\t" . join( ",\n\t\t", @fieldInfo) . "\n\t)\n)";
|
115 |
$output .= "\t'field info' => array(\n\t\t" . join( ",\n\t\t", @fieldInfo) . "\n\t)\n)";
|
| 95 |
|
116 |
|
| 96 |
return $output;
|
117 |
return $output;
|
| 97 |
}
|
118 |
}
|
| 98 |
|
119 |
|
| 99 |
my $inputFileName = shift;
|
120 |
my $inputFileName = shift;
|
| 100 |
unless ($inputFileName) {
|
121 |
if ($inputFileName) {
|
| 101 |
print "usage: sql2admin_hash.pl mysql_dump_file_name\n";
|
122 |
open DATA, "$inputFileName" or die "could not open $inputFileName";
|
| 102 |
print "mysql_dump_file_name is created as\n";
|
123 |
@input = <DATA>;
|
| 103 |
print " mysqldump database_name > mysql_dump_file_name\n";
|
124 |
close DATA;
|
| 104 |
exit(1);
|
125 |
} else {
|
| - |
|
126 |
@input = <STDIN>;
|
| 105 |
}
|
127 |
}
|
| 106 |
open DATA, "$inputFileName" or die "could not open $inputFileName";
|
128 |
@input = grep( !/^(--)|(\/\*\!)/, @input );
|
| 107 |
@input = <DATA>;
|
- |
|
| 108 |
close DATA;
|
129 |
|
| 109 |
|
130 |
|
| 110 |
chomp @input;
|
131 |
chomp @input;
|
| 111 |
my @tables = split( ';', join( '', @input) );
|
132 |
my @tables = split( ';', join( '', @input) );
|
| 112 |
my @results;
|
133 |
my @results;
|
| 113 |
#push @results, &getTableDef( shift @tables );
|
134 |
#push @results, &getTableDef( shift @tables );
|
| 114 |
foreach $thisTable( @tables ) {
|
135 |
foreach $thisTable( @tables ) {
|
| - |
|
136 |
$thisTable =~ s/\`//gi;
|
| 115 |
push @results, &getTableDef( $thisTable );
|
137 |
push @results, &getTableDef( $thisTable );
|
| 116 |
}
|
138 |
}
|
| 117 |
|
139 |
|
| 118 |
print "<?php\n";
|
140 |
print "<?php\n";
|
| 119 |
print "define ( MAX_INPUT_FIELD_DISPLAY, 40 ); // this is the maximum input field size
|
141 |
print "define ( MAX_INPUT_FIELD_DISPLAY, 40 ); // this is the maximum input field size
|