我有一个来源(网页),其中包含我需要存储在一个表中的常见数据和不常见数据。
数据可以是这样的:
model: xyz, attr_1: xyz, attr_2: xyz
model: xyz, attr_3: xyz, attr_4: xyz
model: xyz, attr_1: xyz, attr_4: xyz
model: xyz, attr_1: xyz, attr_5: xyz
model: xyz, attr_15: xyz, attr_20: xyz
此数据将生成此 DML:
insert into table (model, attr_1, attr_2)values('xyz','xyz','xyz');
insert into table (model, attr_3, attr_4)values('xyz','xyz','xyz');
insert into table (model, attr_1, attr_4)values('xyz','xyz','xyz');
insert into table (model, attr_1, attr_5)values('xyz','xyz','xyz');
insert into table (model, attr_15, attr_20)values('xyz','xyz','xyz');
我的问题是我无法在插入命令之前定义表格,因此我无法知道列,并且在每次新插入时我可能会发现新列。我无法在实际插入之前获取所有插入命令。我唯一想到的是将每一行插入不同的表(使用 create table as insert into
),然后使用 UNION ALL
创建最终表。但这听起来不是什么好主意。
编辑我不寻找标准化表格。
最终结果应该是(如示例):
table_name
id int
model varchar
attr_1 varchar
attr_2 varchar
attr_3 varchar
attr_4 varchar
attr_5 varchar
attr_15 varchar
attr_20 varchar
最佳答案
有一个非常简单的解决方案。你需要改变你的表:
table: model
modelName attribute value
xyz 1 xyz
xyz 2 xyz
然后当你执行 INSERT
时,你会做:
INSERT INTO `model` (`modelName`, `attribute`, `value`) VALUES ('xyz', 1, 'xyz')
这是一个规范化的表结构,允许 n
个属性。
关于mysql - 通过不同的列插入创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643880/