Ni siquiera estoy seguro de que el tipo de datos HStore de Postgres pueda contener hashes anidados, y si pueden, ¿cómo insertarlos?¿Es posible, y cuál es la sintaxis para un hash anidado en el tipo HStore de Postgresql?
Aquí es lo que he probado hasta ahora:
-- Database: test1
-- DROP DATABASE test1;
/*
CREATE DATABASE test1
WITH OWNER = iainuser
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_GB.UTF-8'
LC_CTYPE = 'en_GB.UTF-8'
CONNECTION LIMIT = -1;
*/
/* create extension hstore; */
/*drop table my_store;*/
/*
create table my_store (
id serial primary key not null,
doc hstore
);
CREATE INDEX my_store_doc_idx_gist
ON my_store
USING gist
(doc);
*/
/* select doc from my_store; */
/*
insert into my_store (doc) values ('"a" => "1"');
select doc -> 'a' as first_key from my_store; -- returns "1"
*/
/* insert into my_store (doc) values ('"b" => "c" => "3"'); -- doesn't work */
/* insert into my_store (doc) values ('"b" => ("c" => "3")'); -- doesn't work */
/* insert into my_store (doc) values ('"b" => hstore("c" => "3")'); -- doesn't work */
/* insert into my_store (doc) values ('"b"' => hstore("c" => "3")'); -- doesn't work */
/* insert into my_store (doc) values ("b"=>'"c"=>"3"'::hstore); -- doesn't work */
Si no es posible, es que hay una corriente estándar/idioma aceptado para trabajar con los hashes anidados - tal vez separarlos y se refieren a ellos utilizando identificadores?
Cualquier ayuda con esto sería muy apreciada.
Si esto no le da deseo, puede convertir un hstore en texto y luego escapar de las comillas para obtener una cadena que podría guardarse como el valor en un hstore, pero probablemente no sería eso conveniente de usar Es posible que desee considerar un poco más la normalización de los datos. – kgrittn
Gracias por aclarar eso, lo agradezco. Leí esa página en el manual (y es un buen manual) pero ni siquiera tenía un ejemplo de inserto, por lo que me pregunté si habría ejemplos más complejos que también se hubieran omitido. @kgrittn Creo que el casting será la ruta que terminaré tomando, no necesito datos normalizados en esta instancia, (solo un documento como blob realmente), ¡a menos que sea la única forma de obtener el documento en la base de datos! – iain