Tôi thậm chí không chắc chắn rằng kiểu dữ liệu HStore của Postgres có thể chứa các băm lồng nhau, và nếu chúng có thể, làm thế nào để chèn chúng?Có thể, và cú pháp cho một băm lồng nhau trong kiểu HStore của Postgresql là gì?
Đây là những gì tôi đã cố gắng cho đến nay:
-- 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 */
Nếu đó là không thể, là có một tiêu chuẩn được chấp nhận/thành ngữ hiện tại để làm việc với băm lồng nhau - có lẽ kéo chúng ra xa nhau và giới thiệu cho họ sử dụng id?
Bất kỳ trợ giúp nào về điều này sẽ được nhiều người đánh giá cao.
Nếu điều này không cung cấp cho bạn muốn, bạn có thể đúc hstore thành văn bản và sau đó thoát khỏi dấu ngoặc kép để nhận chuỗi có thể được lưu dưới dạng giá trị trong một cửa hàng, nhưng có thể sẽ không thuận tiện để sử dụng. Bạn có thể muốn xem xét việc chuẩn hóa dữ liệu nhiều hơn một chút. – kgrittn
Cảm ơn bạn đã xóa thông tin đó, tôi đánh giá cao điều đó. Tôi đã đọc trang đó trong hướng dẫn sử dụng (và nó là một hướng dẫn sử dụng tốt) nhưng nó thậm chí không có một ví dụ về một chèn, vì vậy tự hỏi có lẽ nếu có nhiều ví dụ phức tạp hơn đã được bỏ ra quá. @kgrittn Tôi nghĩ rằng việc đúc sẽ là con đường tôi kết thúc, tôi không cần dữ liệu chuẩn hóa trong trường hợp này, (chỉ là một tài liệu như một blob thực sự), trừ khi đó là cách duy nhất để có được tài liệu vào cơ sở dữ liệu! – iain