我正在寻找一种将数据插入数据库的最快方法。
目前我有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用户。 它可以是任何语言或数据库查询,只要将记录插入数据库就可以非常快。
答案 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更改为可以解析为您想要的数字的值。