#!/usr/bin/perl -- use strict; use warnings; #~ http://cpansearch.perl.org/src/JROBINSON/SQL-Translator-0.11010/t/47postgres-producer.t use SQL::Translator::Schema::Table; use SQL::Translator::Producer::PostgreSQL; my $table = SQL::Translator::Schema::Table->new( name => 'urls' ); #~ column_name | data_type #~ -----------------+------------------- my %columnType = map { split /\s+\|\s+/, $_ } split /[\r\n]+/, <<'__COL_TYPE__'; date_checked | date http_code | integer base_uri | text host_alive | boolean last_check_good | boolean count_fails | integer count_success | integer pri | boolean url | text table_id | integer tbl | character varying id | integer __COL_TYPE__ while( my( $name, $type ) = each %columnType ){ my $field = SQL::Translator::Schema::Field->new( name => $name, table => $table, data_type => $type, ); $table->add_field( $field ); } #~ use Data::Dump ; dd SQL::Translator::Producer::PostgreSQL::create_table($table) ; my( $sql, $rest ) = SQL::Translator::Producer::PostgreSQL::create_table($table); print "$sql;\n\n"; __END__ -- -- Table: urls -- CREATE TABLE urls ( tbl character varying, url text, id integer, host_alive boolean, count_fails integer, base_uri text, pri boolean, http_code integer, date_checked date, count_success integer, table_id integer, last_check_good boolean );