将数据插入数据库以实现一对多关系的最快方法

时间:2014-11-26 16:29:19

标签: mysql database postgresql insert one-to-many

我正在寻找一种将数据插入数据库的最快方法。

目前我有2个表,用户"用户"和" User_Detail"。 一个用户"可以有很多" User_detail" 例如:

在数据库中,我们有用户和#34; John"的年龄和邮件记录。

用户表

|Name     |
|---------|
| John    | 
| Jason   |  
| Wilson  | 

User_Detail表

| Usr_Name| Property | Value  |
|---------+----------+--------|
| John    | Age      | 12     |
| John    | mail     | gmail  |
| Wilson  | Age      | 31     |

我想写一个查询来添加" uni"对所有用户。 结果会变成这样。

User_Detail表

| Usr_Name | Property | Value  |
|----------+----------+--------|
| John     | Age      | 12     |
| John     | mail     | gmail  |
| John     | Uni      | 00000  |
| Wilson   | Age      | 31     |
| Wilson   | Uni      | 00000  |
| Jason    | Uni      | 00000  |

是否有关于如何插入数据的建议或想法? 我需要以最快的方式完成它,因为我的USER表中有大约10k用户。 它可以是任何语言或数据库查询,只要将记录插入数据库就可以非常快。

2 个答案:

答案 0 :(得分:1)

首先,考虑规范化您的架构。这是一个in-depth discussion of EAV storage on dba.SE

使用您给定的设计,这可以完成工作:

INSERT INTO "User_Detail" ("Usr_Name", "Property", "Value")
SELECT "Name", 'Uni', '0000'
FROM   "User";

在Postgres中,我也会建议not to use mixed-case identifiers

答案 1 :(得分:0)

要插入值,只需执行简单的插入查询。

INSERT INTO `User_detail` (`User_name`, 'Property`, `Value')
SELECT `Name`, 'H/P', 50012 FROM `Users`

要使插入的值不同,您需要将该硬编码值50012更改为可以解析为您想要的数字的值。

相关问题