sql - 如何使用循环获取一一列名是SQL
问题描述
我正在尝试使用循环获取表的列名,以便我可以创建自动“插入”(从一个数据库到另一个数据库),就像附加的图像一样 。
主要目的是我想输入表名,脚本应该像附加的图像一样生成插入。
这是表结构
解决方案
我的回复太长了,不能作为评论,所以我需要把它作为答案。
为此使用循环实际上是有史以来最糟糕的主意。像普通编程语言一样使用 SQL 可能会导致坏习惯。
有一些系统表可以为您存储所有这些信息。您应该查看 sys.columns 和 sys.tables。这两个表之间有明显的连接,即使不是全部,也可以达到 90%。
您的工作太努力了,无法完成一项非常常见的任务——一个对象到另一个目的地的简单 ETL。我为创建插入所做的大部分工作可能只是简单的插入,而无需检查值是否为空(可以从 select 语句中插入空值)。您肯定会在这种方法中产生不必要的开销(我只是在猜测,但从外观上看,您有 110k 行,每行运行条件逻辑,所以我认为我在这里没有错)。我的建议是阅读一两篇关于 ETL 最佳标准实践的文章并了解什么是“UpSert”。