!/usr/bin/perl
use strict;
use warnings;
Paste your SQL between the quotes
my $sql = <<'END_SQL';
PASTE_YOUR_SQL_HERE
END_SQL
my @keywords = qw(SELECT FROM WHERE JOIN ON AND OR ORDER BY GROUP BY HAVING LEFT RIGHT INNER OUTER);
Normalize spacing
$sql =~ s/\s+/ /g;
my @tokens = split(/ /, $sql);
my $indent = 0;
my $formatted = "";
foreach my $token (@tokens) {
my $upper = uc($token);
my $is_keyword = 0;
foreach my $kw (@keywords) {
if ($upper eq $kw || $upper =~ /^$kw$/i) {
$is_keyword = 1;
last;
}
}
if ($is_keyword) {
$formatted .= "\n" . (" " x $indent) . $token . " ";
if ($upper =~ /^(SELECT|FROM|WHERE|ORDER|GROUP|HAVING)$/) {
$indent = 1;
}
} else {
$formatted .= $token . " ";
}
}
print $formatted, "\n";
Top comments (0)