From: | "Bryan White" <bryan(at)arcamax(dot)com> |
---|---|
To: | "James Olin Oden" <joden(at)lee(dot)k12(dot)nc(dot)us>, "Bob Smither" <smither(at)C-C-I(dot)Com> |
Cc: | "Glenn Sullivan" <glenn(dot)sullivan(at)nmr(dot)varian(dot)com>, <pgsql-sql(at)hub(dot)org> |
Subject: | Re: [SQL] Getting datatype before SELECT |
Date: | 1998-09-30 13:19:40 |
Message-ID: | 001401bdec74$fb55af20$a3f0f6ce@bryan.arcamax.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
>> Not at all sure how to do this from C, but from perl I do something like
>> this:
>>
>> $temp = `psql -d databasename -c "\\d tablename"`
>>
>> The item between the `s is executed and the result returned to the
>> variable. $temp now has the full structure of the table and can be
parsed
>> to extract the column names and types. The double \\ is needed to
prevent
>> perl from thinking that \d is a meta character (I think).
>>
>> The output of the command between the `s could also be redirected to a
>> file.
>
>In C he could do essentially the same thing. One approach is to use system
as
>so:
>
> system("psql -d databasename -c \"\\d tablename\" -o /tmp/somefile");
>
>And then he could open the file /tmp/somefile and parse his way through it.
>Also, he can do the what perl does to create pipes (perl is written in C)
and
>essentially do the same thing as you are doing. I personally would go with
>the temp file, using my proccess id to as part of the tempfile name to make
it
>unique to my process, but it should not be to much work to make the proper
>system calls to do the piping...james
Is that not what popen/pclose are for. i.e
FILE *f = popen("psql -d databasename -c \"\\d tablename\"","r");
...
pclose(f);
From | Date | Subject | |
---|---|---|---|
Next Message | herouth maoz | 1998-09-30 22:21:28 | Re: [SQL] Getting datatype before SELECT |
Previous Message | James Olin Oden | 1998-09-30 11:40:38 | Re: [SQL] Getting datatype before SELECT |