Howdy: First off, many thanks to all (esp. R. Dixon and T. Lowery) for the help with the 'using table_info()' thread.
I'm just about done with that script, but I have one tiny problem. In my SECOND while loop, I place a comma (,) at the end so that when the *.ddl files are built, it looks just like I've done it by hand. And close to the way I want to use the scripts for porting to Oracle. Almost. I have one comma too many and I would like to know how can I either: 1) go back over the files AFTER they're done and remove the very last comma in the file 2) set up the loop statement so that I only put commas on all of the columns except for the last row of data. Are either of these possible? I am including the script in case anyone is interested in how it's set up. Yes, I know it could be shorter and much, much cleaner - please feel free to muck with it and pass on hints to making it better. [snip] #!/usr/bin/perl -w use strict; use warnings; use DBI; use POSIX 'strftime'; use Cwd; # hey! this works! # 02 Jul 03 - 1551EST # script to get a list of tables from # PostgreSQL and then get the table # structure # thought I had a copy of this somewhere else ... # 2 Jul 03 -X # set up some variables my $datestr=strftime '%d%B%Y',localtime; # connect to the database my $dbh=DBI->connect('dbi:Pg:dbname=test_db', 'joe_user') or die "Can not connect: $!"; # set up query my $sql = qq| SELECT tablename, tableowner FROM pg_tables where tablename like 't_%' order by 1 |; # test the database handler and prep the sql statements for # execution my $sth=$dbh->prepare($sql) or die "Error =", DBI::errstr; # check for errors unless ($sth->execute) { print"\n\tExecute failed for stmt:\n\t$sql\nError = ", DBI::errstr; $sth->finish; $dbh->disconnect; die "\n\t\tClean up finished\n"; } while ( my($table, $tableowner)=$sth->fetchrow ) { open (FILE, ">$tableowner\.$table.ddl"); print FILE "connect $tableowner/$tableowner;\n\n"; print FILE "create table $table (\n"; print "Starting ddl build of $table...\n"; # statement my $statement = " SELECT a.attname, format_type(a.atttypid, a.atttypmod) FROM pg_class c, pg_attribute a WHERE c.relname = '$table' AND a.attnum > 0 AND a.attrelid = c.oid AND c.relkind = 'r' AND c.relname not like 'pg_%' ORDER BY a.attnum, c.relname "; # prep and execute the SQL statement my $sth = $dbh->prepare ($statement); $sth->execute(); while ( my($first, $second)=$sth->fetchrow ) { print FILE "$first\t\t$second,\n"; } print FILE ")\n"; print FILE ";\n"; print FILE "END;\n"; } print "Done.\n"; close (FILE); $dbh->disconnect; __END__ [/snip] Thanks! -X