/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
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


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408885
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste