mysql - 通过不同的列插入创建表

标签 mysql sql dml

我有一个来源(网页),其中包含我需要存储在一个表中的常见数据和不常见数据。

数据可以是这样的:

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/

相关文章:

mysql - 在 mySQL 中使用 IN/NOT IN

sql比较今天的日期时间

mysql - 我是否错误地进行了嵌套连接?

sql - Oracle始终获取具有标识的插入行的ID

sql - Oracle - Oracle 如何管理特定于事务的 DML 语句

triggers - 如何在运行测试类时停止执行托管触发器?

php - mysql 必须为我的内连接 sql 语句索引什么结构?

php - 为什么在建表时推荐 mysql 数据的默认值和长度很重要?

php - 将图像从 mysql blob 数据库添加到 ZipArchive

sql - 没有用户回答的问题