[Pgsql-ayuda] Insertar datos desde C

Alvaro Herrera alvherre@dcc.uchile.cl
Thu, 31 Jul 2003 23:07:32 -0400


On Thu, Jul 31, 2003 at 03:08:03PM -0700, Alex Nu wrote:
> 
>  Uy, no se que significa exactamente serializar,

Significa que conviertas el vector en una representación lineal.

Por ejemplo si tienes el vector (1, 2, 3) lo puedes convertir en lo
siguiente (todo lo que sigue son strings, no confundir con el vector):
1,2,3
(1,2,3)   (o con cualquier marcador de principio-fin razonable)
1|2|3	  (o cualquier separador razonable)
uno-dos-tres
I-II-III

etc.  Obviamente hay algunas mejores que otras.  La idea es que es un
string que puedes poner en un campo de tipo TEXT.  Así, si tienes un
vector con 300.000 componentes vas a tener un string muy largo, pero que
es un solo dato.  Además tu representación tiene que permitir convertir
a la forma nativa del vector fácilmente, y convertir del vector a la
representación.

Otra alternativa sería convertir los componentes del vector en los bytes
de la representación en punto flotante que tenga tu arquitectura y
guardar eso en un BYTEA.  Me parece mala idea de frentón porque te
amarras a la arquitectura (i.e. no hay modo de pasar la BD de una
máquina little endian a un big endian).

Lo clave del asunto es que el vector no tiene que ser operado por
Postgres, sino sólo almacenado.  Si no es así entonces no uses esto
porque te traerá muchos dolores de cabeza.

>  Cual seria la forma mas eficiente, para insertar
>  ese arreglo en una tabla ???

CREATE TABLE vectores (
	vector_id	SERIAL PRIMARY KEY,
	vector		TEXT
);

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Aprender sin pensar es inutil; pensar sin aprender, peligroso" (Confucio)