sql - T-SQL 查询将数据插入到具有可变列数的表中
问题描述
我正在尝试将表 A 中的数据插入表 B 中,假设数据按其外观排序。
数据应该加载到表 B 的方式是通过 id_column。例如,具有 id_column 1 的数据必须加载到 C01 列。请注意,并非所有数据都具有与 BLOCK 1 或 BLOCK 3 的 int 相同数量的 column_id。
我遇到的问题是表 B 并不总是具有相同数量的列。在这种情况下,它有 4 列,但它可能是 5 或更多或更少,所以我正在尝试的是让我有机会使用不同数量的列。
(当我之前创建了表 B 时,我在考虑表 A 的最大 id_column 时这样做了)
请问,有什么建议吗?
解决方案
INSERT 语句无法处理一组动态列。您必须指定要插入哪些列,这意味着您必须选择一组特定的列,并且与插入的顺序相同。
拥有像您所拥有的那样的表 A 是动态创建数据集的一种流行方法,并且拥有像这样的表通常是数据库中该数据的结尾。大多数应用程序不会尝试以任何其他方式在数据库中解释该数据(例如也将其存储在表 B 中),而是从表 A 中进行选择,然后将数据解析为代码中的对象。
对于具有未知列的数据集,我喜欢做的另一个选择是将未知部分存储在 xml 列中,然后为您知道的内容设置列。
一个例子是
CREATE TABLE tblData
(
BlockID int NOT NULL PRIMARY KEY,
Data xml
)
然后在代码中,您将使用所有随机列构建 xml 块。然后在代码中再次解析它。这为您提供了未知的灵活性。特别是如果其中一些未知列可能包含您不想为其他未知列保留的其他元数据。
推荐阅读
- amazon-web-services - AWS API 网关服务编排
- python-3.x - 如何迭代两个字典并使用值进行计算,以键为条件?
- powerbi - DAX:如何选择每个日期和每个月的最大值
- reactjs - Material-ui 的 CardActionArea 组件属性的打字稿错误
- angular - 具有 SPA 和 MPA 方法的 Angular + net Core 应用程序
- html - 使用 Chrome 放大时文字模糊
- spring-data-jpa - 审计现有数据库表中的完整实体
- node.js - 无法在猫鼬中保存另一个参考文档中的一个对象?
- docker - 如何为基于 linux 的 docker 容器获取 nuget
- python - 为什么我的站点地图显示 /number 而不是 /title 我的帖子?