|
| interne tabeller i postgres Fra : Kim Nielsen |
Dato : 09-11-01 14:47 |
|
Hejsa,
Jeg er igang med at lave et program som skal bruge strukturen af hvordan
en tabel er opbygget i postgres..
feks. en test tabel (mytabel)
id numeric(10)
text varchar(10)
nu er det sådan at jeg gerne vil kunne selecte typerne på attributterne
men kan ikke lige gennemskue hvordan det hænger sammen .. indtil videre
har jeg fundet ud af at en
select atttypmod,attname,relname,attrelid,atttypid from
pg_class,pg_attribute where relname='mytabel' and relfilenode=attrelid;
giver følgende:
atttypmod | attname | relname | attrelid | atttypid
-----------+-----------------+--------------+----------+----------
655364 | id | crm_activity | 1310044 | 1700 ic(10,0)
655364 | text | crm_activity | 1310044 | 1043
numeric(10,0)
men jeg kan ikke lige gennemskue hvordan man finder ud af at attribut
navn er numeric og text er varchar .. nogen der kender til ligende
projecter eller ved hvordan de interne tabeller hænger sammen ?
Mvh
Kim
| |
Torben Frøberg (09-11-2001)
| Kommentar Fra : Torben Frøberg |
Dato : 09-11-01 19:42 |
|
>
> select atttypmod,attname,relname,attrelid,atttypid from
> pg_class,pg_attribute where relname='mytabel' and relfilenode=attrelid;
>
> giver følgende:
> atttypmod | attname | relname | attrelid | atttypid
> -----------+-----------------+--------------+----------+----------
> 655364 | id | crm_activity | 1310044 | 1700
> ic(10,0)
> 655364 | text | crm_activity | 1310044 | 1043
> numeric(10,0)
>
> men jeg kan ikke lige gennemskue hvordan man finder ud af at attribut
> navn er numeric og text er varchar .. nogen der kender til ligende
> projecter eller ved hvordan de interne tabeller hænger sammen ?
Jeg kender ikke særlig meget til PostgreSQl, men udfra det vedlagte
output, vil jeg sige, at typen på variablene fremgår af
atttypid.
Har du prøvet at lede efter, hvilke dictionary tabeller, der findes i
postgreSQL ? Der burde være nogle, der definerer
relationerne mellem tabellerne (Ville jeg umiddelbart mene.).
>
| |
Kim Nielsen (12-11-2001)
| Kommentar Fra : Kim Nielsen |
Dato : 12-11-01 08:05 |
|
Torben Frøberg wrote:
> Jeg kender ikke særlig meget til PostgreSQl, men udfra det vedlagte
> output, vil jeg sige, at typen på variablene fremgår af
> atttypid.
Det var også min tanke men jeg har ikke kunne finde en tabel med
fremmednøglen eller den primære nøgle for denne attribut.
> Har du prøvet at lede efter, hvilke dictionary tabeller, der findes i
> postgreSQL ? Der burde være nogle, der definerer
> relationerne mellem tabellerne (Ville jeg umiddelbart mene.).
Jeg har brugt weekenden til at kigge sourcekoden igennem efter
deklarering af typer og har fundet dem .. (filen hedder pg_type.h) men
er stadig overbevist om at det kan lade sig gøre fra et sql statement ..
jeg kan fra Oracle så mon ikke også postgres kan :) Lige nu og her kan
jeg cut`n`paste det fra header filen men hvad hvis du ændrer typen .. så
jeg hele tiden holde øje med deres interne datatyper .. det ville jeg
helst være fri for ..
/Kim
| |
Kim Nielsen (12-11-2001)
| Kommentar Fra : Kim Nielsen |
Dato : 12-11-01 10:00 |
|
Har selv fundet en løsning :)
SELECT a.attnum, a.attname AS field, t.typname AS type, a.attlen AS
length, a.atttypmod AS lengthvar, a.attnotnull AS notnull FROM pg_class
c, pg_attribute a, pg_type t WHERE c.relname = 'crm_pipeline' and
a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid ORDER BY a.attnum
/Kim
| |
|
|