【发布时间】:2019-12-26 10:47:06
【问题描述】:
我有一个 MySQL 数据库表,即 ds_message 和 ds_params,它的表 ds_message 在每一行中都包含一个 JSON 对象。我想通过引用 ds_message 主键 id 将 JSON 对象的键和值存储到所有记录的表 ds_params 中
表:ds_message
_____________________________________________________________________________________
id key_value
_____________________________________________________________________________________
1 '{"a":"John", "b":"bat", "c":"$10"}'
2 '{"i":"Emma", "j":"Jam"}'
我需要将 key_value 插入到另一个表中,例如
_________________________________________________
id message_id json_key json_value
_________________________________________________
1 1 'a' 'John'
2 1 'b' 'bat'
3 1 'c' '$10'
4 2 'i' 'Emma'
5 2 'j' 'Jam'
表结构:
CREATE TABLE `ds_message` (
`id` int NOT NULL,
`key_value` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='';
ALTER TABLE `ds_message`
ADD PRIMARY KEY (`id`);
INSERT INTO `ds_message` (`id`, `key_value`) VALUES
(1, '{"a":"John", "b":"bat", "c":"$10"}');
INSERT INTO `ds_message` (`id`, `key_value`) VALUES
(2, '{"i":"Emma", "j":"Jam"}');
CREATE TABLE `ds_params` (
`id` int NOT NULL,
`message_id` int NOT NULL,
`json_key` varchar(500) NOT NULL,
`json_value` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='';
ALTER TABLE `ds_params`
ADD PRIMARY KEY (`id`);
请帮助我如何实现这一点,它可能是一个简单的 select cum insert 语句或以优化方式存储过程。
【问题讨论】:
-
您需要拆分 JSON 并在后端以编程方式一一插入。您使用 PHP 作为后端?
-
@AdlanArifZakaria 我使用 Java 作为后端,但我需要 MySQL 而不是 Java 中的解决方案。
标签: mysql json key-value mysql-json