将字典(Of String,Int16())保存到 PostgreSQL 单元格中
Saving a Dictionary(Of String, Int16()) into a PostgreSQL cell
我有一个 Dictionary(of String, INT16()).
这本字典表示来自测量的模拟值。我想将这本字典存储到 PostgreSQL 数据库的一个单元格中。我正在使用 Npgsql。
我搜索了很长时间,但我不知道该怎么做。
我的想法是将字典序列化并保存为数组,但我不确定这是不是正确的方法。
有没有人可以帮我解决这个问题?
感谢您的回答
CREATE TYPE StringIntPairType AS (k string,v int);
更新:
这是如何从 pg sql
完成此操作的完整示例
定义字典的元素类型
CREATE TYPE StringIntPairType AS (k text,v int);
创建样本table。请注意,集合列在末尾标记为“[]”
CREATE TABLE CollectionsTables
(
Id SERIAL UNIQUE,
Collection StringIntPairType[],
Description TEXT,
TS TIMESTAMP NOT NULL DEFAULT now()
)
插入一条包含两个字典元素的记录
INSERT INTO CollectionsTables(Collection,Description) VALUES
(
array
[
('Test1',1)::StringIntPairType,
('Test2',2)::StringIntPairType
],
'Description1'
);
插入另一个包含两个字典元素的单条记录
INSERT INTO CollectionsTables(Collection,Description) VALUES
(
array
[
('TestA',30)::StringIntPairType,
('TestB',40)::StringIntPairType
],
'Description2'
);
请注意,这是常规 table 就像任何其他 table
SELECT * FROM CollectionsTables
这里有一些更高级的select。
SELECT Collection[1].k,Description FROM CollectionsTables
第一列:第一个字典值的键
第二栏:描述栏
你可以在上面使用JSON datatype, and even apply functions。
这可能是也可能不是一个好方法,这取决于您需要对数据做什么以及您的系统是如何构建的。
虽然如上所述 JSON(或 JSONB)数据类型应该是首选答案,但您也可以选择使用 hstore。缺点是 hstore 只存储字符串,所以你的整数不会被键入。
我有一个 Dictionary(of String, INT16()).
这本字典表示来自测量的模拟值。我想将这本字典存储到 PostgreSQL 数据库的一个单元格中。我正在使用 Npgsql。
我搜索了很长时间,但我不知道该怎么做。
我的想法是将字典序列化并保存为数组,但我不确定这是不是正确的方法。
有没有人可以帮我解决这个问题?
感谢您的回答
CREATE TYPE StringIntPairType AS (k string,v int);
更新: 这是如何从 pg sql
完成此操作的完整示例定义字典的元素类型
CREATE TYPE StringIntPairType AS (k text,v int);
创建样本table。请注意,集合列在末尾标记为“[]”
CREATE TABLE CollectionsTables
(
Id SERIAL UNIQUE,
Collection StringIntPairType[],
Description TEXT,
TS TIMESTAMP NOT NULL DEFAULT now()
)
插入一条包含两个字典元素的记录
INSERT INTO CollectionsTables(Collection,Description) VALUES
(
array
[
('Test1',1)::StringIntPairType,
('Test2',2)::StringIntPairType
],
'Description1'
);
插入另一个包含两个字典元素的单条记录
INSERT INTO CollectionsTables(Collection,Description) VALUES
(
array
[
('TestA',30)::StringIntPairType,
('TestB',40)::StringIntPairType
],
'Description2'
);
请注意,这是常规 table 就像任何其他 table
SELECT * FROM CollectionsTables
这里有一些更高级的select。
SELECT Collection[1].k,Description FROM CollectionsTables
第一列:第一个字典值的键
第二栏:描述栏
你可以在上面使用JSON datatype, and even apply functions。
这可能是也可能不是一个好方法,这取决于您需要对数据做什么以及您的系统是如何构建的。
虽然如上所述 JSON(或 JSONB)数据类型应该是首选答案,但您也可以选择使用 hstore。缺点是 hstore 只存储字符串,所以你的整数不会被键入。