To view the file structure of a table using a sql query
select pg_class.relname, pg_attribute.attname, pg_type.typname, pg_type.typlen from pg_class, pg_attribute, pg_type where pg_class.relname = 'YOURTABLENAME' and pg_class.oid = pg_attribute.attrelid and pg_type.oid = pg_attribute.atttypid having attnum > 0
pg_field_size
(PHP 4 >= 4.2.0, PHP 5)
pg_field_size — Zwraca wewnętrzny rozmiar kolumny
Opis
int pg_field_size
( resource
$wynik
, int $numer_pola
)
pg_field_size() zwraca wewnętrzny rozmiar
(w bajtach) wskazanej numerem kolumny w podanym wyniku
wynik PostgreSQL-a.
Informacja:
Ta funkcja była poprzednio nazwana pg_fieldsize().
Parametry
-
wynik -
Identyfikator wyniku zapytania PostgreSQL, zwrócony przez pg_query(), pg_query_params() lub pg_execute() (między innymi).
-
numer_pola -
Numer pola, zaczynając od zera.
Zwracane wartości
Wewnętrzny rozmiar danego pola (w bajtach). -1 oznacza niestałą
wielkość pola. FALSE zwracane jest w przypadku błędu.
Przykłady
Przykład #1 Pobieranie informacji o polach
<?php
$polaczenie = pg_connect("dbname=wydawca") or die("Nie można się połączyć");
$wyn = pg_query($polaczenie, "select * from autorzy where autor = 'Orwell'");
$i = pg_num_fields($wyn);
for ($j = 0; $j < $i; $j++) {
echo "kolumna $j\n";
$nazwa_pola = pg_field_name($wyn, $j);
echo "nazwa pola: $nazwa_pola\n";
echo "drukowalna długość: " . pg_field_prtlen($wyn, $nazwa_pola) . " znak(ów)\n";
echo "rzeczywista długość: " . pg_field_size($wyn, $j) . " bajt(ów)\n";
echo "typ pola: " . pg_field_type($wyn, $j) . " \n\n";
}
?>
Powyższy przykład wyświetli:
kolumna 0 nazwa pola: autor drukowalna długość: 6 znak(ów) rzeczywista długość: -1 bajt(ów) typ pola: varchar kolumna 1 nazwa pola: rok drukowalna długość: 4 znak(ów) rzeczywista długość: 2 bajt(ów) typ pola: int2 kolumna 2 nazwa pola: tytul drukowalna długość: 24 znak(ów) rzeczywista długość: -1 bajt(ów) typ pola: varchar
Zobacz też:
- pg_field_prtlen() - Zwraca drukowalną długość
- pg_field_type() - Zwraca typ wskazanej kolumny
ij at NOSPAM dot irj dot co dot za
14-Jun-2005 07:21
php at tribun dot de
23-Feb-2005 07:49
function get_create_syntax( $table )
{
$qry = "
SELECT *
FROM $table
LIMIT 1
";
$res = pg_query( $qry );
$row = pg_fetch_assoc( $res );
$create = "CREATE TABLE $table \n(\n";
$item = array();
for( $i = 0; $i < count( $row ); $i++ )
{
$name = pg_field_name( $res, $i );
$type = pg_field_type( $res, $i );
$size = pg_field_size( $res, $i );
$item[$i] = '"'.$name.'" '.$type;
$qry = "
SELECT a.atttypmod AS size,
a.attnotnull AS notnull
FROM pg_attribute AS a,
pg_class AS c
WHERE c.relname = '$table'
AND a.attrelid = c.oid
AND a.attname = '$name'
";
$res2 = pg_query( $qry );
$out = pg_fetch_object( $res2 );
if( $out -> size != -1 )
{
$item[$i] .= '('.( $out -> size - 4 ).')';
}
if( $out -> notnull == 't' )
$item[$i] .= ' NOT';
$item[$i] .= ' NULL';
}
$create .= implode( ",\n", $item ) ."\n);";
return $create;
}
alex at linuxNOSPAM dot org dot pe
02-Jul-2002 11:44
How i can extract the struct of a Postgresql Table?
I want to do a dynamic php code, that see the pg table, and print name, type and size of fields
