Re: filemaker to pgsql ? - Mailing list pgsql-general

From Yann Ramin
Subject Re: filemaker to pgsql ?
Date
Msg-id 00110719063707.16657@atp.atpn.com
Whole thread Raw
In response to filemaker to pgsql ?  (Isaac <Isaac@UNSTOPPABLE.com>)
List pgsql-general
Yes, I just did the awhile back :)
Its time stamped and outputs a file which can be globbed in via. psql.  This
way you can check for errors before you go insert.

Yann


Here is my version of the script:

#!/usr/bin/perl

#dvf=> \d products
##            Table "products"
#   Attribute   |     Type     | Modifier
#---------------+--------------+----------
# product       | varchar(20)  |
# owner         | varchar(100) |
# add_date      | bigint       |
# collection    | varchar(50)  |
# camera_format | varchar(50)  |
# clip_cost     | float8       |
# duration      | bigint       |
# film_date     | bigint       |
# location      | varchar(50)  |

sub do_opt {
    my ($product, $field, @loop) = @_;
    my $val;
    foreach $val (@loop) {
        if ($val) {
            print "INSERT INTO product_opt (product, key, value) VALUES
('$product', '$field', '$val');\n";
        }
    }
}

while(<>) {
        my @input = split(/\t/);
        my $now = time;
        my $product = $input[0];
        print "INSERT INTO products (product, owner, add_date, collection,
camera_format, clip_cost, duration, film_date, location) VALUES ('$input[0]',
'person\@redshift.com', $now, '$input[14]', '$input[3]', $input[4],
$input[8], '$input[6]', '$input[10]');\n";
        my @altitude = split(/[\cK]/, $input[1]);
        do_opt($product, 'altitude', @altitude);
        my @behavior = split(/[\cK]/, $input[2]);
        do_opt($product, 'behavior', @behavior);
        my @common = split(/[\cK]/, $input[5]);
        do_opt($product, 'common', @common);
        my @key = split(/[\cK]/, $input[7]);
        do_opt($product, 'keyword', @key);
        my @habitat = split(/[\cK]/, $input[9]);
do_opt($product, 'habitat', @habitat);
        my @subject = split(/[\cK]/, $input[13]);
        do_opt($product, 'subject', @subject);
        my @compo = split(/[\cK]/, $input[11]);
        do_opt($product, 'composition', @compo);





}

On Mon, 06 Nov 2000, you (Isaac) might of written:
> hello,
>
> has anyone converted files from filemaker to postgres? I'm figuring I'll
> just export everything into tabbed text files and then use the perl
> extensions to parse it out into INSERT queries. If anyone has any
> experience (or code!) to share on this process, it would be great to hear
> about it.
>
> --i

--

--------------------------------------------------------------------
Yann Ramin            atrus@atrustrivalie.eu.org
Atrus Trivalie Productions    www.redshift.com/~yramin
AIM                oddatrus
Marina, CA            http://profiles.yahoo.com/theatrus

IRM Developer                   Network Toaster Developer
SNTS Developer                  KLevel Developer
Electronics Hobbyist        person who loves toys

Build a man a fire, and he's warm for a day.
Set a man on fire, and he'll be warm for the rest of his life.

"I'm prepared for all emergencies but totally unprepared for everyday
life."
--------------------------------------------------------------------









pgsql-general by date:

Previous
From: Ice Planet
Date:
Subject: static compilation error
Next
From: "Jarmo Paavilainen"
Date:
Subject: SV: PG and login