首页 > 解决方案 > 如何使用循环获取一一列名是SQL

问题描述

我正在尝试使用循环获取表的列名,以便我可以创建自动“插入”(从一个数据库到另一个数据库),就像附加的图像一样 图片

主要目的是我想输入表名,脚本应该像附加的图像一样生成插入。

这是表结构

表结构

标签: sqlsql-serverstored-proceduressp

解决方案


我的回复太长了,不能作为评论,所以我需要把它作为答案。

  1. 为此使用循环实际上是有史以来最糟糕的主意。像普通编程语言一样使用 SQL 可能会导致坏习惯。

  2. 有一些系统表可以为您存储所有这些信息。您应该查看 sys.columns 和 sys.tables。这两个表之间有明显的连接,即使不是全部,也可以达到 90%。

  3. 您的工作太努力了,无法完成一项非常常见的任务——一个对象到另一个目的地的简单 ETL。我为创建插入所做的大部分工作可能只是简单的插入,而无需检查值是否为空(可以从 select 语句中插入空值)。您肯定会在这种方法中产生不必要的开销(我只是在猜测,但从外观上看,您有 110k 行,每行运行条件逻辑,所以我认为我在这里没有错)。我的建议是阅读一两篇关于 ETL 最佳标准实践的文章并了解什么是“UpSert”。


推荐阅读