#! /usr/bin/perl # a small script that takes a sqlite3 schema and creates # a normalized version (zaps extraneous spaces, rewrites # everything as lowercase, sorts by table/view name) use v5.36; my ($object, $comment); my $stmt = ''; while() { chomp; $stmt .= " ".lc($_); if (m/\;/) { $stmt =~ s/\s+/ /g; $stmt =~ s/^\s//; $stmt =~ s/\s?\(\s?/\(/g; $stmt =~ s/\s?\)\s?/\)/g; if ($stmt =~ m/^create table (\S+)/) { $object->{$1} = $stmt; } elsif ($stmt =~ m/^create view (\S+)/) { $object->{$1} = $stmt; } else { say $stmt; } $stmt = ''; } } for my $k (sort keys %$object) { if ($object->{$k} =~ m,\s/\*,) { say "$`\n/*$'\n"; } else { say $object->{$k}, "\n"; } }