Rails3:Postgres Hstore:如何在具有 hstore 列的 table 中插入多条记录
Rails3: Postgres Hstore: How to insert multiple records in a table that has an hstore column
我想在我的 table 中插入多条记录,其中有一个 Hstore 列。
我怎样才能做到这一点?
col3: hstore 数据类型
INSERT INTO my_table (col1, col2, col3) VALUES ("abc",123,'"property1"=>"hello","property2"=>"hi"'), ("xyz",345,'"property1"=>"hello1","property"=>"hi1"'), ("weq",23,'"property1"=>"hello2","property"=>"hi2"')
此格式以字符串格式添加hstore中的记录。我希望它像一个我可以访问的 key:value 哈希
你有两个问题 SQL:
- SQL 字符串文字用单引号括起来,双引号用于标识符(例如 table 和列名)。
- hstore literals不要使用大括号,它们通常表示为字符串。
解决这些问题会给我们带来:
INSERT INTO my_table (col1, col2, col3) VALUES
('abc', 123, '"property1"=>"hello","property2"=>"hi"'),
('xyz', 345, '"property1"=>"hello1","property"=>"hi1"'),
('wqe', 23, '"property1"=>"hello2","property"=>"hi2"')
就 SQL 而言,我将提供 "access them like any other column" 的示例,任何向 Rails 的转换都由您承担 - 我不知道。访问 hstore 中的值与访问任何独立列略有不同。由于 hstore 由 key:value 对组成,因此您需要为各个值指定键。其格式为:hstore_column -> 'key_name'。示例(使用上面发布的数据)
-- select value specific key
select col1, col2, col3 -> 'property'
from my_table;
-- select entire hstore when value for specific key missing
select col3
from my_table
where col3 -> 'property' is null;
-- select entire row there value ends in a digit for specific key
select *
from my_table
where col3 -> 'property' ~ '.*\d$'
希望这些帮助。 '
我想在我的 table 中插入多条记录,其中有一个 Hstore 列。 我怎样才能做到这一点? col3: hstore 数据类型
INSERT INTO my_table (col1, col2, col3) VALUES ("abc",123,'"property1"=>"hello","property2"=>"hi"'), ("xyz",345,'"property1"=>"hello1","property"=>"hi1"'), ("weq",23,'"property1"=>"hello2","property"=>"hi2"')
此格式以字符串格式添加hstore中的记录。我希望它像一个我可以访问的 key:value 哈希
你有两个问题 SQL:
- SQL 字符串文字用单引号括起来,双引号用于标识符(例如 table 和列名)。
- hstore literals不要使用大括号,它们通常表示为字符串。
解决这些问题会给我们带来:
INSERT INTO my_table (col1, col2, col3) VALUES
('abc', 123, '"property1"=>"hello","property2"=>"hi"'),
('xyz', 345, '"property1"=>"hello1","property"=>"hi1"'),
('wqe', 23, '"property1"=>"hello2","property"=>"hi2"')
就 SQL 而言,我将提供 "access them like any other column" 的示例,任何向 Rails 的转换都由您承担 - 我不知道。访问 hstore 中的值与访问任何独立列略有不同。由于 hstore 由 key:value 对组成,因此您需要为各个值指定键。其格式为:hstore_column -> 'key_name'。示例(使用上面发布的数据)
-- select value specific key
select col1, col2, col3 -> 'property'
from my_table;
-- select entire hstore when value for specific key missing
select col3
from my_table
where col3 -> 'property' is null;
-- select entire row there value ends in a digit for specific key
select *
from my_table
where col3 -> 'property' ~ '.*\d$'
希望这些帮助。 '